From 629aa2201743539d57ba98fc05c88ee201d99c13 Mon Sep 17 00:00:00 2001 From: Armin Briegel <1933192+scriptingosx@users.noreply.github.com> Date: Wed, 3 Aug 2022 09:02:38 +0200 Subject: [PATCH] added single app example for SwiftDialog --- MDM/swiftdialog_example.sh | 153 +++++++++++++++++++++++++++++++++++++ MDM/swiftdialog_list.sh | 7 +- 2 files changed, 155 insertions(+), 5 deletions(-) create mode 100755 MDM/swiftdialog_example.sh diff --git a/MDM/swiftdialog_example.sh b/MDM/swiftdialog_example.sh new file mode 100755 index 0000000..72af118 --- /dev/null +++ b/MDM/swiftdialog_example.sh @@ -0,0 +1,153 @@ +#!/bin/zsh + +# runs through a list of Installomator items +# and displays status using Swift Dialog +# +# dependencies: +# - Swift Dialog: https://github.com/bartreardon/swiftDialog +# - Installomator: https://github.com/Installomator/Installomator +# this script will install both if they are not yet present + +export PATH=/usr/bin:/bin:/usr/sbin:/sbin + +# MARK: Variables + +# set to 1 to not require root and not actually do any changes +# set to 0 for production +if [[ $1 == "NODEBUG" ]]; then + DEBUG=0 +else + DEBUG=1 +fi + +# the label to install: +label="googlechromepkg" + + +# MARK: Constants + +scriptDir=$(dirname ${0:A}) +repoDir=$(dirname $scriptDir) + +# if [[ $DEBUG -eq 1 ]]; then + installomator="$repoDir/utils/assemble.sh" +# else +# installomator="/usr/local/Installomator/Installomator.sh" +# fi + +dialog="/usr/local/bin/dialog" + +if [[ DEBUG -eq 0 ]]; then + dialog_command_file="/var/tmp/dialog.log" +else + dialog_command_file="$HOME/dialog.log" +fi + + +# MARK: Functions + +dialogUpdate() { + # $1: dialog command + local dcommand=$1 + + if [[ -n $dialog_command_file ]]; then + echo "$dcommand" >> $dialog_command_file + echo "Dialog: $dcommand" + fi +} + +progressUpdate() { + # $1: progress text (optional) + local text=$1 + itemCounter=$((itemCounter + 1)) + dialogUpdate "progress: $itemCounter" + if [[ -n $text ]]; then + dialogUpdate "progresstext: $text" + fi +} + +startItem() { + local description=$1 + + echo "Starting Item: $description" + dialogUpdate "listitem: $description: wait" + progressUpdate $description +} + +cleanupAndExit() { + # kill caffeinate process + if [[ -n $caffeinatePID ]]; then + echo "killing caffeinate..." + kill $caffeinatePID + fi + + # clean up tmp dir + if [[ -n $tmpDir && -d $tmpDir ]]; then + echo "removing tmpDir $tmpDir" + rm -rf $tmpDir + fi +} + +# MARK: sanity checks + +# check minimal macOS requirement +if [[ $(sw_vers -buildVersion ) < "20" ]]; then + echo "This script requires at least macOS 11 Big Sur." + exit 98 +fi + +# check we are running as root +if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then + echo "This script should be run as root" + exit 97 +fi + +# check for installomator +if [[ ! -x $installomator ]]; then + echo "Cannot find Installomator at $installomator" + exit 96 +fi + +# check for Swift Dialog +if [[ ! -x $dialog ]]; then + echo "Cannot find dialog at $dialog" + exit 95 +fi + + +# MARK: Setup + +# No sleeping +caffeinate -dimsu & caffeinatePID=$! + +# trap exit for cleanup +trap cleanupAndExit EXIT + +# display first screen +$dialog --title none \ + --message "" \ + --hideicon \ + --progress 100 \ + --button1disabled \ + --height 40 \ + --width 500 \ + --position bottomright \ + --ontop \ + --movable \ + --commandfile $dialog_command_file & dialogPID=$! + +sleep 0.1 + +$installomator $label \ + DIALOG_CMD_FILE="$dialog_command_file" \ + DEBUG=$DEBUG + +# clean up UI + +dialogUpdate "progress: complete" +dialogUpdate "progresstext: Done" + +sleep 0.5 + +dialogUpdate "quit:" + diff --git a/MDM/swiftdialog_list.sh b/MDM/swiftdialog_list.sh index 9f3b8a7..cb48483 100755 --- a/MDM/swiftdialog_list.sh +++ b/MDM/swiftdialog_list.sh @@ -20,9 +20,6 @@ else DEBUG=1 fi -# the delay to simulate an install in DEBUG mode -fakeInstallDelay=5 - # list of Installomator labels items=( @@ -157,14 +154,14 @@ done # display first screen $dialog --title "More Software" \ --icon "SF=gear" \ - --message "We are downloading and installing some extra Apps. Hold on for minute..." \ + --message "We are downloading and installing some extra Apps..." \ --progress $itemCount \ "${listitems[@]}" \ --button1disabled \ --big \ --ontop \ --liststyle compact \ - --messagefont size=16 \ + --width 700 \ --commandfile $dialog_command_file & dialogPID=$! sleep 0.1