Merge branch 'Logging-level-improvements' into packages-app

This commit is contained in:
Armin Briegel
2022-02-09 15:43:21 +01:00
4 changed files with 50 additions and 46 deletions

View File

@@ -1,5 +1,6 @@
## v10
- Changed and improved logging levels on many messages throughout the script. Should be more polished.
-
## v9

View File

@@ -10,21 +10,21 @@ fi
# MARK: argument parsing
if [[ $# -eq 0 ]]; then
if [[ -z $label ]]; then # check if label is set inside script
printlog "no label provided, printing labels"
printlog "no label provided, printing labels" REQ
grep -E '^[a-z0-9\_-]*(\)|\|\\)$' "$0" | tr -d ')|\' | grep -v -E '^(broken.*|longversion|version|valuesfromarguments)$' | sort
#grep -E '^[a-z0-9\_-]*(\)|\|\\)$' "${labelFile}" | tr -d ')|\' | grep -v -E '^(broken.*|longversion|version|valuesfromarguments)$' | sort
exit 0
fi
elif [[ $1 == "/" ]]; then
# jamf uses sends '/' as the first argument
printlog "shifting arguments for Jamf"
printlog "shifting arguments for Jamf" REQ
shift 3
fi
while [[ -n $1 ]]; do
if [[ $1 =~ ".*\=.*" ]]; then
# if an argument contains an = character, send it to eval
printlog "setting variable from argument $1"
printlog "setting variable from argument $1" REQ
eval $1
else
# assume it's a label
@@ -96,31 +96,31 @@ currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print
# MARK: check for root
if [[ "$(whoami)" != "root" && "$DEBUG" -eq 0 ]]; then
# not running as root
cleanupAndExit 6 "not running as root, exiting"
cleanupAndExit 6 "not running as root, exiting" ERROR
fi
# MARK: labels in case statement
case $label in
longversion)
# print the script version
printlog "Installomater: version $VERSION ($VERSIONDATE)"
printlog "Installomater: version $VERSION ($VERSIONDATE)" REQ
exit 0
;;
valuesfromarguments)
if [[ -z $name ]]; then
printlog "need to provide 'name'"
printlog "need to provide 'name'" ERROR
exit 1
fi
if [[ -z $type ]]; then
printlog "need to provide 'type'"
printlog "need to provide 'type'" ERROR
exit 1
fi
if [[ -z $downloadURL ]]; then
printlog "need to provide 'downloadURL'"
printlog "need to provide 'downloadURL'" ERROR
exit 1
fi
if [[ -z $expectedTeamID ]]; then
printlog "need to provide 'expectedTeamID'"
printlog "need to provide 'expectedTeamID'" ERROR
exit 1
fi
;;

View File

@@ -18,6 +18,8 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
reopenClosedProcess
if [[ -n $2 && $1 -ne 0 ]]; then
printlog "ERROR: $2" $3
else
printlog "$2" $3
fi
printlog "################## End Installomator, exit code $1 \n\n" REQ
@@ -176,7 +178,7 @@ versionFromGit() {
appNewVersion=$(curl --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
if [ -z "$appNewVersion" ]; then
printlog "could not retrieve version number for $gitusername/$gitreponame"
printlog "could not retrieve version number for $gitusername/$gitreponame" WARN
appNewVersion=""
else
echo "$appNewVersion"
@@ -229,9 +231,9 @@ getAppVersion() {
applist=$(mdfind "kind:application $appName" -0 )
fi
if [[ -z applist ]]; then
printlog "No previous app found" DEBUG
printlog "No previous app found" INFO
else
printlog "App(s) found: ${applist}" DEBUG
printlog "App(s) found: ${applist}" INFO
fi
appPathArray=( ${(0)applist} )
@@ -255,10 +257,10 @@ getAppVersion() {
fi
fi
else
printlog "could not determine location of $appName"
printlog "could not determine location of $appName" WARN
fi
else
printlog "could not find $appName"
printlog "could not find $appName" WARN
fi
}
@@ -385,7 +387,7 @@ reopenClosedProcess() {
processuser=$(ps aux | grep -i "${appName}" | grep -vi "grep" | awk '{print $1}')
printlog "Reopened ${appName} as $processuser"
else
printlog "App not closed, so no reopen." DEBUG
printlog "App not closed, so no reopen." INFO
fi
}
@@ -395,7 +397,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir
# check if app exists
if [ ! -e "$appPath" ]; then
cleanupAndExit 8 "could not find: $appPath" DEBUG
cleanupAndExit 8 "could not find: $appPath" ERROR
fi
# verify with spctl
@@ -427,10 +429,12 @@ installAppWithPath() { # $1: path to app to install in $targetDir
printlog "notifying"
displaynotification "$message" "No update for $name!"
fi
cleanupAndExit 0 "No new version to install" INFO
cleanupAndExit 0 "No new version to install" WARN
else
printlog "Using force to install anyway."
fi
elif [[ -z $appversion ]]; then
printlog "Installing $name version $appNewVersion on versionKey $versionKey."
else
printlog "Downloaded version of $name is $appNewVersion on versionKey $versionKey (replacing version $appversion)."
fi
@@ -446,7 +450,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir
printlog "notifying"
displaynotification "$message" "Error updating $name!"
fi
cleanupAndExit 6 "Installed macOS is too old for this app." INFO
cleanupAndExit 6 "Installed macOS is too old for this app." ERROR
fi
fi
@@ -585,7 +589,7 @@ installFromPKG() {
printlog "notifying"
displaynotification "$message" "No update for $name!"
fi
cleanupAndExit 0 "No new version to install" INFO
cleanupAndExit 0 "No new version to install" WARN
else
printlog "Using force to install anyway."
fi
@@ -659,28 +663,29 @@ installPkgInDmg() {
if [[ -z $pkgName ]]; then
# find first file ending with 'pkg'
findfiles=$(find "$dmgmount" -iname "*.pkg" -type f -maxdepth 1 )
printlog "Found pkg(s):\n$findfiles" DEBUG
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find pkg in dmg $archiveName" ERROR
fi
archiveName="${filearray[1]}"
printlog "found pkg: $archiveName"
else
if ls "$tmpDir/$pkgName" ; then
if [[ -s "$dmgmount/$pkgName" ]] ; then # was: $tmpDir
archiveName="$tmpDir/$pkgName"
else
# try searching for pkg
findfiles=$(find "$tmpDir" -iname "$pkgName")
findfiles=$(find "$dmgmount" -iname "$pkgName") # was: $tmpDir
printlog "Found pkg(s):\n$findfiles" DEBUG
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find pkg “$pkgName” in zip $archiveName" ERROR
cleanupAndExit 20 "couldn't find pkg “$pkgName” in dmg $archiveName" ERROR
fi
# it is now safe to overwrite archiveName for installFromPKG
archiveName="${filearray[1]}"
printlog "found pkg: $archiveName"
fi
fi
printlog "found pkg: $archiveName"
# installFromPkgs
installFromPKG
}
@@ -694,6 +699,7 @@ installPkgInZip() {
if [[ -z $pkgName ]]; then
# find first file ending with 'pkg'
findfiles=$(find "$tmpDir" -iname "*.pkg" -type f -maxdepth 2 )
printlog "Found pkg(s):\n$findfiles" DEBUG
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find pkg in zip $archiveName" ERROR
@@ -770,13 +776,13 @@ runUpdateTool() {
printlog "Error running $updateTool, Procceding with normal installation. Exit Status: $updateStatus Error:\n$logoutput" WARN
return 1
if [[ $type == updateronly ]]; then
cleanupAndExit 77 "No Download URL Set, this is an update only application and the updater failed" WARN
cleanupAndExit 77 "No Download URL Set, this is an update only application and the updater failed" ERROR
fi
elif [[ $updateStatus -eq 0 ]]; then
printlog "Debugging enabled, update tool output was:\n$logoutput" DEBUG
fi
else
printlog "couldn't find $updateTool, continuing normally"
printlog "couldn't find $updateTool, continuing normally" WARN
return 1
fi
return 0

View File

@@ -1,13 +1,13 @@
*)
# unknown label
#printlog "unknown label $label"
cleanupAndExit 1 "unknown label $label"
cleanupAndExit 1 "unknown label $label" ERROR
;;
esac
# Are we only asked to return label name
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
printlog "Only returning label name."
printlog "Only returning label name." REQ
printlog "$name"
echo "$name"
exit
@@ -18,7 +18,7 @@ fi
if [[ ${INTERRUPT_DND} = "no" ]]; then
# Check if a fullscreen app is active
if hasDisplaySleepAssertion; then
cleanupAndExit 1 "active display sleep assertion detected, aborting"
cleanupAndExit 1 "active display sleep assertion detected, aborting" ERROR
fi
fi
@@ -63,9 +63,9 @@ if [[ ! -a "${LOGO}" ]]; then
LOGO="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO=${LOGO}"
printlog "LOGO=${LOGO}" INFO
printlog "Label type: $type"
printlog "Label type: $type" INFO
# MARK: extract info from data
if [ -z "$archiveName" ]; then
@@ -87,7 +87,7 @@ if [ -z "$archiveName" ]; then
;;
esac
fi
printlog "archiveName: $archiveName" DEBUG
printlog "archiveName: $archiveName" INFO
if [ -z "$appName" ]; then
# when not given derive from name
@@ -105,14 +105,13 @@ if [ -z "$targetDir" ]; then
updateronly)
;;
*)
printlog "Cannot handle type $type"
cleanupAndExit 99
cleanupAndExit 99 "Cannot handle type $type" ERROR
;;
esac
fi
if [[ -z $blockingProcesses ]]; then
printlog "no blocking processes defined, using $name as default"
printlog "no blocking processes defined, using $name as default" INFO
blockingProcesses=( $name )
fi
@@ -128,8 +127,7 @@ fi
# MARK: change directory to temporary working directory
printlog "Changing directory to $tmpDir" DEBUG
if ! cd "$tmpDir"; then
printlog "error changing directory $tmpDir"
cleanupAndExit 1
cleanupAndExit 1 "error changing directory $tmpDir" ERROR
fi
# MARK: get installed version
@@ -152,10 +150,10 @@ if [[ -n $appNewVersion ]]; then
printlog "notifying"
displaynotification "$message" "No update for $name!"
fi
cleanupAndExit 0 "No newer version."
cleanupAndExit 0 "No newer version." WARN
fi
else
printlog "DEBUG mode 1 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." WARN
fi
fi
else
@@ -174,7 +172,7 @@ if [[ (-n $appversion && -n "$updateTool") || "$type" == "updateronly" ]]; then
cleanupAndExit 0
fi # otherwise continue
else
printlog "DEBUG mode 1 enabled, not running update tool"
printlog "DEBUG mode 1 enabled, not running update tool" WARN
fi
fi
@@ -197,14 +195,14 @@ else
deduplicatelogs "$curlDownload"
if [[ $curlDownloadStatus -ne 0 ]]; then
#if ! curl --location --fail --silent "$downloadURL" -o "$archiveName"; then
printlog "error downloading $downloadURL"
printlog "error downloading $downloadURL" ERROR
message="$name update/installation failed. This will be logged, so IT can follow up."
if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
printlog "notifying"
if [[ $updateDetected == "YES" ]]; then
displaynotification "$message" "Error updating $name" ERROR
displaynotification "$message" "Error updating $name"
else
displaynotification "$message" "Error installing $name" ERROR
displaynotification "$message" "Error installing $name"
fi
fi
printlog "File list: $(ls -lh "$archiveName")" ERROR
@@ -269,8 +267,7 @@ case $type in
installAppInDmgInZip
;;
*)
printlog "Cannot handle type $type"
cleanupAndExit 99
cleanupAndExit 99 "Cannot handle type $type" ERROR
;;
esac