diff --git a/CHANGELOG.md b/CHANGELOG.md index 57c1d85..5f87508 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## v9? +- We have moved the root check to the beginning of the script, and improved DEBUG handling with two different modes. `DEBUG=0` is still for production, and `1` is still for the DEBUG we previously knew downloading to the directory it is running from, but `2` will download to temporary folder, will detect updates, but will not install anything, but it will notify the user (almost as running the script without root before). ## v8.0 diff --git a/fragments/arguments.sh b/fragments/arguments.sh index 26e4192..0f8765f 100644 --- a/fragments/arguments.sh +++ b/fragments/arguments.sh @@ -57,6 +57,11 @@ versionKey="CFBundleShortVersionString" # get current user currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }') +# MARK: check for root +if [[ "$(whoami)" != "root" && "$DEBUG" -ne 2 ]]; then + # not running as root + cleanupAndExit 6 "not running as root, exiting" +fi # MARK: labels in case statement case $label in diff --git a/fragments/functions.sh b/fragments/functions.sh index de47768..f5d5137 100644 --- a/fragments/functions.sh +++ b/fragments/functions.sh @@ -4,7 +4,7 @@ cleanupAndExit() { # $1 = exit code, $2 message if [[ -n $2 && $1 -ne 0 ]]; then printlog "ERROR: $2" fi - if [ "$DEBUG" -eq 0 ]; then + if [ "$DEBUG" -ne 1 ]; then # remove the temporary working directory when done printlog "Deleting $tmpDir" rm -Rf "$tmpDir" @@ -198,9 +198,9 @@ getAppVersion() { } checkRunningProcesses() { - # don't check in DEBUG mode - if [[ $DEBUG -ne 0 ]]; then - printlog "DEBUG mode, not checking for blocking processes" + # don't check in DEBUG mode 1 + if [[ $DEBUG -eq 1 ]]; then + printlog "DEBUG mode 1, not checking for blocking processes" return fi @@ -305,9 +305,9 @@ reopenClosedProcess() { return fi - # don't reopen in DEBUG mode - if [[ $DEBUG -ne 0 ]]; then - printlog "DEBUG mode, not reopening anything" + # don't reopen in DEBUG mode 1 + if [[ $DEBUG -eq 1 ]]; then + printlog "DEBUG mode 1, not reopening anything" return fi @@ -364,16 +364,16 @@ installAppWithPath() { # $1: path to app to install in $targetDir printlog "Downloaded version of $name is $appNewVersion (replacing version $appversion)." fi - # skip install for DEBUG - if [ "$DEBUG" -ne 0 ]; then - printlog "DEBUG enabled, skipping remove, copy and chown steps" + # skip install for DEBUG 1 + if [ "$DEBUG" -eq 1 ]; then + printlog "DEBUG mode 1 enabled, skipping remove, copy and chown steps" return 0 fi - # check for root - if [ "$(whoami)" != "root" ]; then - # not running as root - cleanupAndExit 6 "not running as root, exiting" + # skip install for DEBUG 2 + if [ "$DEBUG" -eq 2 ]; then + printlog "DEBUG mode 2 enabled, exiting" + cleanupAndExit 0 fi # Test if variable CLIInstaller is set @@ -485,16 +485,16 @@ installFromPKG() { fi fi - # skip install for DEBUG - if [ "$DEBUG" -ne 0 ]; then + # skip install for DEBUG 1 + if [ "$DEBUG" -eq 1 ]; then printlog "DEBUG enabled, skipping installation" return 0 fi - # check for root - if [ "$(whoami)" != "root" ]; then - # not running as root - cleanupAndExit 6 "not running as root, exiting" + # skip install for DEBUG 2 + if [ "$DEBUG" -eq 2 ]; then + printlog "DEBUG mode 2 enabled, exiting" + cleanupAndExit 0 fi # install pkg diff --git a/fragments/header.sh b/fragments/header.sh index 357077d..c41879d 100644 --- a/fragments/header.sh +++ b/fragments/header.sh @@ -20,9 +20,11 @@ export PATH=/usr/bin:/bin:/usr/sbin:/sbin # NOTE: adjust these variables: -# set to 0 for production, 1 for debugging +# set to 0 for production, 1 or 2 for debugging # while debugging, items will be downloaded to the parent directory of this script # also no actual installation will be performed +# debug mode 1 will download to the directory the script is run in, but will not check version +# debug mode 2 will download to the temp directory, check for blocking processes, check version, but will not install anything or remove the current version DEBUG=1 # notify behavior diff --git a/fragments/main.sh b/fragments/main.sh index 55cfa52..493e2f7 100644 --- a/fragments/main.sh +++ b/fragments/main.sh @@ -96,7 +96,7 @@ if [[ -z $blockingProcesses ]]; then fi # MARK: determine tmp dir -if [ "$DEBUG" -ne 0 ]; then +if [ "$DEBUG" -eq 1 ]; then # for debugging use script dir as working directory tmpDir=$(dirname "$0") else @@ -124,7 +124,7 @@ fi if [[ -n $appNewVersion ]]; then printlog "Latest version of $name is $appNewVersion" if [[ $appversion == $appNewVersion ]]; then - if [[ $DEBUG -eq 0 ]]; then + if [[ $DEBUG -ne 1 ]]; then printlog "There is no newer version available." if [[ $INSTALL != "force" ]]; then message="$name, version $appNewVersion, is the latest version." @@ -135,7 +135,7 @@ if [[ -n $appNewVersion ]]; then cleanupAndExit 0 "No newer version." fi else - printlog "DEBUG mode enabled, not exiting, but there is no new version of app." + printlog "DEBUG mode 1 enabled, not exiting, but there is no new version of app." fi fi else @@ -145,7 +145,7 @@ fi # MARK: check if this is an Update and we can use updateTool if [[ (-n $appversion && -n "$updateTool") || "$type" == "updateronly" ]]; then printlog "appversion & updateTool" - if [[ $DEBUG -eq 0 ]]; then + if [[ $DEBUG -ne 1 ]]; then if runUpdateTool; then finishing cleanupAndExit 0 @@ -154,13 +154,13 @@ if [[ (-n $appversion && -n "$updateTool") || "$type" == "updateronly" ]]; then cleanupAndExit 0 fi # otherwise continue else - printlog "DEBUG mode enabled, not running update tool" + printlog "DEBUG mode 1 enabled, not running update tool" fi fi # MARK: download the archive -if [ -f "$archiveName" ] && [ "$DEBUG" -ne 0 ]; then - printlog "$archiveName exists and DEBUG enabled, skipping download" +if [ -f "$archiveName" ] && [ "$DEBUG" -eq 1 ]; then + printlog "$archiveName exists and DEBUG mode 1 enabled, skipping download" else # download the dmg printlog "Downloading $downloadURL to $archiveName"