diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cdc219..902ab65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ ## v0.8 +- Installomator now detects when an app is already installed, and will display notifications correctly the user based on if the app was updated or installed for the first time. +- New variables for labels that should be installaed using CLI: `CLIInstaller` and `CLIArguments`. If the installer app is named differently than the installed app, then the variable `installerTool` should be use to name the app that should be located in the DMG or zip. See the label __adobecreativeclouddesktop__ to see it’s use. - `buildLabel.sh` has been improved to build GitHub software labels much easier. In essense if the URL contains github.com, then it will try to find if it's the latest version or if variable `archiveName` is needed for finding the software. Also improved messaging throughout the script, as well as handling a situation where a pkg does not include a “DIstribution” file, but a “PackageInfo”. - MDM script extended with `caffeinate` so Mac will not go to sleep during the time it takes installomator to run. Especially during setup, this can be handy. +- Microsoft labels with `updateTool` variable, is updated to run `msupdate --list` before running the updateTool directly. Problems have been reported that the update would fail if the `--list` parameter for the command was not run first. ## v0.7 diff --git a/Installomator.sh b/Installomator.sh index 73f70e9..780d390 100755 --- a/Installomator.sh +++ b/Installomator.sh @@ -1280,6 +1280,7 @@ boxsync) boxtools) name="Box Tools" type="pkg" + packageID="com.box.boxtools.installer.boxedit" downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" expectedTeamID="M683GB7CPW" ;; diff --git a/Labels.txt b/Labels.txt index 1986992..2e4034b 100644 --- a/Labels.txt +++ b/Labels.txt @@ -11,6 +11,7 @@ aircall airserver airtame aldente +alephone alfred alttab amazonchime @@ -49,16 +50,19 @@ boxdrive boxsync boxtools brave +bugdom caffeine cakebrew calibre camostudio camtasia canva +chatwork cisdem-documentreader citrixworkspace clevershare2 clickshare +closeio cloudya code42 coderunner @@ -85,14 +89,17 @@ easeusdatarecoverywizard egnyte element eraseinstall +eshareosx etrecheck evernote exelbanstats exifrenamer fantastical +fastscripts favro ferdi figma +findanyfile firefox firefox_da firefox_intl @@ -149,6 +156,7 @@ jetbrainsintellijideace jetbrainsphpstorm jetbrainspycharm jetbrainspycharmce +jetbrainsrubymine jetbrainstoolbox jetbrainswebstorm karabinerelements @@ -171,6 +179,9 @@ lulu macfuse macports malwarebytes +marathon +marathon2 +marathoninfinity mattermost menumeters microsoftautoupdate @@ -197,6 +208,7 @@ microsoftword microsoftyammer miro montereyblocker +mowgliiitsycal musescore muzzle netnewswire @@ -204,6 +216,7 @@ nextcloud nomad nomadlogin notion +nudge nvivo obs obsidian @@ -221,6 +234,7 @@ onlyofficedesktop openvpnconnect openvpnconnectv3 opera +ottomatic pacifist pandoc parsec @@ -261,6 +275,7 @@ scaleft screamingfrogseospider screencloudplayer screenflick +sequelpro sfsymbols shield sidekick @@ -285,6 +300,7 @@ spotify steelseriesengine strongsync sublimetext +superhuman supportapp suspiciouspackage swiftruntimeforcommandlinetools @@ -324,7 +340,7 @@ vivaldi vlc vmwarehorizonclient vscodium -wallyezflash +wacomdrivers webex webexmeetings webexteams @@ -341,6 +357,7 @@ yubikeymanagerqt zappy zeplin zohoworkdrive +zohoworkdrivetruesync zoom zoomclient zoomgov diff --git a/README.md b/README.md index 2cfb90a..b387170 100644 --- a/README.md +++ b/README.md @@ -372,11 +372,24 @@ Depending on the application or pkg there are a few more variables you can or ne `$updateTool $updateArguments` Will be run instead of of downloading and installing a complete new version. Use this when the `updateTool` does differential and optimized downloads. - e.g. `msupdate` (see microsoft installations) + e.g. `msupdate` (see various Microsoft installations). - `updateToolRunAsCurrentUser`: When this variable is set (any value), `$updateTool` will be run as the current user. Default is unset and +- `CLIInstaller`: +- `CLIArguments`: + If the downloaded dmg is actually an installer that we can call using CLI, we can use these two variables for what to call. + We need to define `name` for the installed app (to be version checked), as well as `installerTool` for the installer app (if named differently that `name`. Installomator will add the path to the folder/disk image with the binary, and it will be called like this: + `$CLIInstaller $CLIArguments` + For most installations `CLIInstaller` should contain the `installerTool` for the CLI call (if it’s the same). + We can support a whole range of other software titles by implementing this. + See label adobecreativeclouddesktop. + +- `installerTool`: + Introduced as part of `CLIInstaller`. If the installer in the DMG or ZIP is named differently than the installed app, then this variable can be used to name the installer that should be located after mounting/expanding the downloaded archive. + See label adobecreativeclouddesktop + ### Configuration from Arguments You can provide a configuration variable, such as `DEBUG` or `NOTIFY` as an argument in the form `VAR=value`. For example: diff --git a/fragments/broken/mightymike.sh b/fragments/broken/mightymike.sh new file mode 100644 index 0000000..b241a6a --- /dev/null +++ b/fragments/broken/mightymike.sh @@ -0,0 +1,7 @@ +mightymike) + name="Nanosaur" + type="dmg" + downloadURL=$(downloadURLFromGit jorio MightyMike) + appNewVersion=$(versionFromGit jorio MightyMike) + expectedTeamID="RVNL7XC27G" + ;; diff --git a/fragments/broken/nanosaur.sh b/fragments/broken/nanosaur.sh new file mode 100644 index 0000000..980f53e --- /dev/null +++ b/fragments/broken/nanosaur.sh @@ -0,0 +1,7 @@ +nanosaur) + name="Nanosaur" + type="dmg" + downloadURL=$(downloadURLFromGit jorio Nanosaur) + appNewVersion=$(versionFromGit jorio Nanosaur) + expectedTeamID="RVNL7XC27G" + ;; diff --git a/fragments/functions.sh b/fragments/functions.sh index 446bbd5..48d0ebc 100644 --- a/fragments/functions.sh +++ b/fragments/functions.sh @@ -148,6 +148,7 @@ getAppVersion() { appversion="$(pkgutil --pkg-info-plist ${packageID} 2>/dev/null | grep -A 1 pkg-version | tail -1 | sed -E 's/.*>([0-9.]*)<.*/\1/g')" if [[ $appversion != "" ]]; then printlog "found packageID $packageID installed, version $appversion" + updateDetected="YES" return else printlog "No version found using packageID $packageID" @@ -162,7 +163,11 @@ getAppVersion() { else applist=$(mdfind "kind:application $appName" -0 ) fi - printlog "App(s) found: ${applist}" + if [[ -z applist ]]; then + printlog "No previous app found" + else + printlog "App(s) found: ${applist}" + fi appPathArray=( ${(0)applist} ) @@ -173,6 +178,7 @@ getAppVersion() { #appversion=$(mdls -name kMDItemVersion -raw $installedAppPath ) appversion=$(defaults read $installedAppPath/Contents/Info.plist $versionKey) #Not dependant on Spotlight indexing printlog "found app at $installedAppPath, version $appversion" + updateDetected="YES" # Is current app from App Store if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace." @@ -342,7 +348,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir # versioncheck # credit: Søren Theilgaard (@theilgaard) appNewVersion=$(defaults read $appPath/Contents/Info.plist $versionKey) - if [[ $appversion == $appNewVersion ]]; then + if [[ -n $appNewVersion && $appversion == $appNewVersion ]]; then printlog "Downloaded version of $name is $appNewVersion, same as installed." if [[ $INSTALL != "force" ]]; then message="$name, version $appNewVersion, is the latest version." @@ -369,7 +375,9 @@ installAppWithPath() { # $1: path to app to install in $targetDir # not running as root cleanupAndExit 6 "not running as root, exiting" fi - + + # Test if variable CLIInstaller is set + if [[ -z $CLIInstaller ]]; then # remove existing application if [ -e "$targetDir/$appName" ]; then printlog "Removing existing $targetDir/$appName" @@ -382,7 +390,6 @@ installAppWithPath() { # $1: path to app to install in $targetDir cleanupAndExit 7 "Error while copying" fi - # set ownership to current user if [ "$currentUser" != "loginwindow" ]; then printlog "Changing owner to $currentUser" @@ -391,6 +398,22 @@ installAppWithPath() { # $1: path to app to install in $targetDir printlog "No user logged in, not changing user" fi + elif [[ ! -z $CLIInstaller ]]; then + mountname=$(dirname $appPath) + printlog "CLIInstaller exists, running installer command $mountname/$CLIInstaller $CLIArguments" #INFO + + CLIoutput=$("$mountname/$CLIInstaller" "${CLIArguments[@]}" 2>&1) + CLIstatus=$(echo $?) + logoutput="$CLIoutput" # dedupliatelogs "$CLIoutput" + + if [ $CLIstatus -ne 0 ] ; then + cleanupAndExit 3 "Error installing $mountname/$CLIInstaller $CLIArguments error:\n$logoutput" #ERROR + else + printlog "Succesfully ran $mountname/$CLIInstaller $CLIArguments" + fi + printlog "Debugging enabled, update tool output was:\n$logoutput" #DEBUG + fi + } mountDMG() { @@ -411,7 +434,6 @@ mountDMG() { installFromDMG() { mountDMG - installAppWithPath "$dmgmount/$appName" } @@ -612,7 +634,11 @@ finishing() { if [[ $currentUser != "loginwindow" && ( $NOTIFY == "success" || $NOTIFY == "all" ) ]]; then printlog "notifying" - displaynotification "$message" "$name update/installation complete!" + if [[ $updateDetected == "YES" ]]; then + displaynotification "$message" "$name update complete!" + else + displaynotification "$message" "$name installation complete!" + fi fi } diff --git a/fragments/header.sh b/fragments/header.sh index 476d54e..357077d 100644 --- a/fragments/header.sh +++ b/fragments/header.sh @@ -198,8 +198,27 @@ REOPEN="yes" # $updateTool $updateArguments # Will be run instead of of downloading and installing a complete new version. # Use this when the updateTool does differential and optimized downloads. -# e.g. msupdate +# e.g. msupdate on various Microsoft labels # # - updateToolRunAsCurrentUser: # When this variable is set (any value), $updateTool will be run as the current user. # +# - CLIInstaller: +# - CLIArguments: +# If the downloaded dmg is actually an installer that we can call using CLI, we can +# use these two variables for what to call. +# We need to define `name` for the installed app (to be version checked), as well as +# `installerTool` for the installer app (if named differently that `name`. Installomator +# will add the path to the folder/disk image with the binary, and it will be called like this: + `$CLIInstaller $CLIArguments` +# For most installations `CLIInstaller` should contain the `installerTool` for the CLI call +# (if it’s the same). +# We can support a whole range of other software titles by implementing this. +# See label adobecreativeclouddesktop +# +# - installerTool: +# Introduced as part of `CLIInstaller`. If the installer in the DMG or ZIP is named +# differently than the installed app, then this variable can be used to name the +# installer that should be located after mounting/expanding the downloaded archive. +# See label adobecreativeclouddesktop +# diff --git a/fragments/labels/adobecreativeclouddesktop.sh b/fragments/labels/adobecreativeclouddesktop.sh new file mode 100644 index 0000000..7445443 --- /dev/null +++ b/fragments/labels/adobecreativeclouddesktop.sh @@ -0,0 +1,17 @@ +adobecreativeclouddesktop) + name="Adobe Creative Cloud" + #appName="Install.app" + type="dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1) + elif [[ $(arch) == "i386" ]]; then + downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*osx10.*dmg" | cut -d '"' -f1 | head -1) + fi + #downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*dmg" | head -1) + appNewVersion=$(curl -fs "https://helpx.adobe.com/creative-cloud/release-note/cc-release-notes.html" | grep "mandatory" | head -1 | grep -o "Version *.* released" | cut -d " " -f2) + installerTool="Install.app" + CLIInstaller="Install.app/Contents/MacOS/Install" + CLIArguments=(--mode=silent) + expectedTeamID="JQ525L2MZD" + Company="Adobe" + ;; diff --git a/fragments/labels/alephone.sh b/fragments/labels/alephone.sh new file mode 100644 index 0000000..5ad40a9 --- /dev/null +++ b/fragments/labels/alephone.sh @@ -0,0 +1,7 @@ +alephone) + name="Aleph One" + type="dmg" + downloadURL=$(downloadURLFromGit Aleph-One-Marathon alephone) + appNewVersion=$(versionFromGit Aleph-One-Marathon alephone) + expectedTeamID="E8K89CXZE7" + ;; diff --git a/fragments/labels/audacity.sh b/fragments/labels/audacity.sh index 89c17fe..a5868d3 100644 --- a/fragments/labels/audacity.sh +++ b/fragments/labels/audacity.sh @@ -1,8 +1,7 @@ audacity) - # credit: Gabe Marchan (gabemarchan.com - @darklink87) name="Audacity" type="dmg" downloadURL=$(downloadURLFromGit audacity audacity) appNewVersion=$(versionFromGit audacity audacity) - expectedTeamID="T3N4JQ7YY6" + expectedTeamID="AWEYX923UX" ;; diff --git a/fragments/labels/bugdom.sh b/fragments/labels/bugdom.sh new file mode 100644 index 0000000..106b3e5 --- /dev/null +++ b/fragments/labels/bugdom.sh @@ -0,0 +1,7 @@ +bugdom) + name="Bugdom" + type="dmg" + downloadURL=$(downloadURLFromGit jorio Bugdom) + appNewVersion=$(versionFromGit jorio Bugdom) + expectedTeamID="RVNL7XC27G" + ;; diff --git a/fragments/labels/chatwork.sh b/fragments/labels/chatwork.sh new file mode 100644 index 0000000..f8fb708 --- /dev/null +++ b/fragments/labels/chatwork.sh @@ -0,0 +1,6 @@ +chatwork) + name="Chatwork" + type="dmg" + downloadURL="https://desktop-app.chatwork.com/installer/Chatwork.dmg" + expectedTeamID="H34A3H2Y54" + ;; diff --git a/fragments/labels/fastscripts.sh b/fragments/labels/fastscripts.sh new file mode 100644 index 0000000..2aed4c9 --- /dev/null +++ b/fragments/labels/fastscripts.sh @@ -0,0 +1,7 @@ +fastscripts) + name="FastScripts" + type="zip" + downloadURL=$( curl -fs "https://redsweater.com/fastscripts/appcast3.php" | xpath '//rss/channel/item/enclosure/@url' 2>/dev/null | cut -d '"' -f2 ) + appNewVersion=$( curl -fs "https://redsweater.com/fastscripts/appcast3.php" | xpath '//rss/channel/item/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f2 ) + expectedTeamID="493CVA9A35" + ;; diff --git a/fragments/labels/findanyfile.sh b/fragments/labels/findanyfile.sh new file mode 100644 index 0000000..2061ac0 --- /dev/null +++ b/fragments/labels/findanyfile.sh @@ -0,0 +1,7 @@ +findanyfile) + name="Find Any File" + type="zip" + downloadURL=$(curl -fs "https://findanyfile.app/appcast2.php" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2) + appNewVersion=$(curl -fs "https://findanyfile.app/appcast2.php" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2) + expectedTeamID="25856V4B4X" + ;; diff --git a/fragments/labels/jabradirect.sh b/fragments/labels/jabradirect.sh index e0b789b..4359ac6 100644 --- a/fragments/labels/jabradirect.sh +++ b/fragments/labels/jabradirect.sh @@ -1,7 +1,8 @@ jabradirect) name="Jabra Direct" type="pkgInDmg" + packageID="com.jabra.directonline" downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg" + appNewVersion=$(curl -fs https://www.jabra.com/Support/release-notes/release-note-jabra-direct | grep -oe "Release version:.*[0-9.]*<" | head -1 | cut -d ">" -f2 | cut -d "<" -f1 | sed 's/ //g') expectedTeamID="55LV32M29R" - appNewVersion=$(curl -fs https://www.jabra.com/Support/release-notes/release-note-jabra-direct | grep -o "Jabra Direct macOS:*.*<" | head -1 | cut -d ":" -f2 | cut -d " " -f2 | cut -d "<" -f1) ;; diff --git a/fragments/labels/jetbrainsrubymine.sh b/fragments/labels/jetbrainsrubymine.sh new file mode 100644 index 0000000..cd140e2 --- /dev/null +++ b/fragments/labels/jetbrainsrubymine.sh @@ -0,0 +1,13 @@ +jetbrainsrubymine) + name="RubyMine" + type="dmg" + jetbrainscode="RM" + if [[ $(arch) == i386 ]]; then + jetbrainsdistribution="mac" + elif [[ $(arch) == arm64 ]]; then + jetbrainsdistribution="macM1" + fi + downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}" + appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' ) + expectedTeamID="2ZEFAR8TH3" + ;; diff --git a/fragments/labels/logseq.sh b/fragments/labels/logseq.sh new file mode 100644 index 0000000..d51caff --- /dev/null +++ b/fragments/labels/logseq.sh @@ -0,0 +1,13 @@ +logseq) + name="Logseq" + type="dmg" + if [[ $(arch) == "arm64" ]]; then + archiveName="darwin-arm64-[0-9.]*.dmg" + downloadURL=$(downloadURLFromGit logseq logseq) + elif [[ $(arch) == "i386" ]]; then + archiveName="darwin-x64-[0-9.]*.dmg" + downloadURL=$(downloadURLFromGit logseq logseq) + fi + appNewVersion=$(versionFromGit logseq logseq) + expectedTeamID="3K44EUN829" + ;; diff --git a/fragments/labels/maccyapp.sh b/fragments/labels/maccyapp.sh new file mode 100644 index 0000000..7ea7be4 --- /dev/null +++ b/fragments/labels/maccyapp.sh @@ -0,0 +1,7 @@ +maccyapp) + name="Maccy" + type="zip" + downloadURL="$(downloadURLFromGit p0deje Maccy)" + appNewVersion="$(versionFromGit p0deje Maccy)" + expectedTeamID="MN3X4648SC" + ;; diff --git a/fragments/labels/marathon.sh b/fragments/labels/marathon.sh new file mode 100644 index 0000000..75f5799 --- /dev/null +++ b/fragments/labels/marathon.sh @@ -0,0 +1,8 @@ +marathon) + name="Marathon" + type="dmg" + archiveName="Marathon-[0-9.]*-Mac.dmg" + downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)" + appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)" + expectedTeamID="E8K89CXZE7" + ;; diff --git a/fragments/labels/marathon2.sh b/fragments/labels/marathon2.sh new file mode 100644 index 0000000..02440fa --- /dev/null +++ b/fragments/labels/marathon2.sh @@ -0,0 +1,8 @@ +marathon2) + name="Marathon 2" + type="dmg" + archiveName="Marathon2-[0-9.]*-Mac.dmg" + downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)" + appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)" + expectedTeamID="E8K89CXZE7" + ;; diff --git a/fragments/labels/marathoninfinity.sh b/fragments/labels/marathoninfinity.sh new file mode 100644 index 0000000..a9b5165 --- /dev/null +++ b/fragments/labels/marathoninfinity.sh @@ -0,0 +1,8 @@ +marathoninfinity) + name="Marathon Infinity" + type="dmg" + archiveName="MarathonInfinity-[0-9.]*-Mac.dmg" + downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)" + appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)" + expectedTeamID="E8K89CXZE7" + ;; diff --git a/fragments/labels/mattermost.sh b/fragments/labels/mattermost.sh index d7a89d9..532a436 100644 --- a/fragments/labels/mattermost.sh +++ b/fragments/labels/mattermost.sh @@ -1,12 +1,9 @@ mattermost) name="Mattermost" type="dmg" - if [[ $(arch) == i386 ]]; then - archiveName="mac-x64.dmg" - elif [[ $(arch) == arm64 ]]; then - archiveName="mac-m1.dmg" - fi + archiveName="mac-universal.dmg" downloadURL=$(downloadURLFromGit mattermost desktop) appNewVersion=$(versionFromGit mattermost desktop ) expectedTeamID="UQ8HT4Q2XM" + Mattermost Helper (Renderer).app app.asar ;; diff --git a/fragments/labels/microsoftcompanyportal.sh b/fragments/labels/microsoftcompanyportal.sh index 335d3d0..6285730 100644 --- a/fragments/labels/microsoftcompanyportal.sh +++ b/fragments/labels/microsoftcompanyportal.sh @@ -5,6 +5,10 @@ microsoftcompanyportal) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.intunecompanyportal.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/CompanyPortal_.*pkg" | cut -d "_" -f 2 | cut -d "-" -f 1) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps IMCP01 ) ;; diff --git a/fragments/labels/microsoftdefenderatp.sh b/fragments/labels/microsoftdefenderatp.sh index 964b69a..a156277 100644 --- a/fragments/labels/microsoftdefenderatp.sh +++ b/fragments/labels/microsoftdefenderatp.sh @@ -5,6 +5,10 @@ microsoftdefenderatp) appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.defender.standalone"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/') # No version number in download url expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps WDAV00 ) ;; diff --git a/fragments/labels/microsoftedge.sh b/fragments/labels/microsoftedge.sh index 2089f4f..b252929 100644 --- a/fragments/labels/microsoftedge.sh +++ b/fragments/labels/microsoftedge.sh @@ -1,11 +1,16 @@ microsoftedge|\ -microsoftedgeconsumerstable) +microsoftedgeconsumerstable|\ +microsoftedgeenterprisestable) name="Microsoft Edge" type="pkg" - downloadURL="https://go.microsoft.com/fwlink/?linkid=2069148" + downloadURL="https://go.microsoft.com/fwlink/?linkid=2093504" #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.edge"]/cfbundleversion' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/MicrosoftEdge.*pkg" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps EDGE01 ) ;; diff --git a/fragments/labels/microsoftedgeenterprisestable.sh b/fragments/labels/microsoftedgeenterprisestable.sh deleted file mode 100644 index 2b85afa..0000000 --- a/fragments/labels/microsoftedgeenterprisestable.sh +++ /dev/null @@ -1,10 +0,0 @@ -microsoftedgeenterprisestable) - name="Microsoft Edge" - type="pkg" - downloadURL="https://go.microsoft.com/fwlink/?linkid=2093438" - #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.edge"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/') - appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/MicrosoftEdge.*pkg" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') - expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" - updateToolArguments=( --install --apps EDGE01 ) - ;; diff --git a/fragments/labels/microsoftexcel.sh b/fragments/labels/microsoftexcel.sh index 9d18b59..7c57ac0 100644 --- a/fragments/labels/microsoftexcel.sh +++ b/fragments/labels/microsoftexcel.sh @@ -5,6 +5,10 @@ microsoftexcel) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.excel.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps XCEL2019 ) ;; diff --git a/fragments/labels/microsoftoffice365.sh b/fragments/labels/microsoftoffice365.sh index 3ef3429..c6b240e 100644 --- a/fragments/labels/microsoftoffice365.sh +++ b/fragments/labels/microsoftoffice365.sh @@ -7,7 +7,11 @@ microsoftoffice365) expectedTeamID="UBF8T346G9" # using MS PowerPoint as the 'stand-in' for the entire suite #appName="Microsoft PowerPoint.app" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi blockingProcesses=( "Microsoft AutoUpdate" "Microsoft Word" "Microsoft PowerPoint" "Microsoft Excel" "Microsoft OneNote" "Microsoft Outlook" "OneDrive" ) - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install ) ;; diff --git a/fragments/labels/microsoftofficebusinesspro.sh b/fragments/labels/microsoftofficebusinesspro.sh index cbc3dd2..739a21b 100644 --- a/fragments/labels/microsoftofficebusinesspro.sh +++ b/fragments/labels/microsoftofficebusinesspro.sh @@ -6,7 +6,11 @@ microsoftofficebusinesspro) expectedTeamID="UBF8T346G9" # using MS PowerPoint as the 'stand-in' for the entire suite appName="Microsoft PowerPoint.app" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi blockingProcesses=( "Microsoft AutoUpdate" "Microsoft Word" "Microsoft PowerPoint" "Microsoft Excel" "Microsoft OneNote" "Microsoft Outlook" "OneDrive" "Teams") - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install ) ;; diff --git a/fragments/labels/microsoftonedrive.sh b/fragments/labels/microsoftonedrive.sh index 25a25ff..722a7a4 100644 --- a/fragments/labels/microsoftonedrive.sh +++ b/fragments/labels/microsoftonedrive.sh @@ -5,6 +5,10 @@ microsoftonedrive) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.onedrive.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | cut -d "/" -f 6 | cut -d "." -f 1-3) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps ONDR18 ) ;; diff --git a/fragments/labels/microsoftonenote.sh b/fragments/labels/microsoftonenote.sh index bff8ede..c3ffea0 100644 --- a/fragments/labels/microsoftonenote.sh +++ b/fragments/labels/microsoftonenote.sh @@ -5,6 +5,10 @@ microsoftonenote) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.onenote.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps ONMC2019 ) ;; diff --git a/fragments/labels/microsoftoutlook.sh b/fragments/labels/microsoftoutlook.sh index 583de23..ef48e10 100644 --- a/fragments/labels/microsoftoutlook.sh +++ b/fragments/labels/microsoftoutlook.sh @@ -5,6 +5,10 @@ microsoftoutlook) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.outlook.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps OPIM2019 ) ;; diff --git a/fragments/labels/microsoftpowerpoint.sh b/fragments/labels/microsoftpowerpoint.sh index 0bebefc..f00e30e 100644 --- a/fragments/labels/microsoftpowerpoint.sh +++ b/fragments/labels/microsoftpowerpoint.sh @@ -5,6 +5,10 @@ microsoftpowerpoint) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.powerpoint.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps PPT32019 ) ;; diff --git a/fragments/labels/microsoftremotedesktop.sh b/fragments/labels/microsoftremotedesktop.sh index a071372..2707be4 100644 --- a/fragments/labels/microsoftremotedesktop.sh +++ b/fragments/labels/microsoftremotedesktop.sh @@ -5,6 +5,10 @@ microsoftremotedesktop) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.remotedesktop.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_Remote_Desktop.*pkg" | cut -d "_" -f 4) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps MSRD10 ) ;; diff --git a/fragments/labels/microsoftskypeforbusiness.sh b/fragments/labels/microsoftskypeforbusiness.sh index f4526b1..bfc2de9 100644 --- a/fragments/labels/microsoftskypeforbusiness.sh +++ b/fragments/labels/microsoftskypeforbusiness.sh @@ -5,6 +5,10 @@ microsoftskypeforbusiness) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.skypeforbusiness.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps MSFB16 ) ;; diff --git a/fragments/labels/microsoftword.sh b/fragments/labels/microsoftword.sh index 4acebdd..801fb48 100644 --- a/fragments/labels/microsoftword.sh +++ b/fragments/labels/microsoftword.sh @@ -5,6 +5,10 @@ microsoftword) #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.word.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/') appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2) expectedTeamID="UBF8T346G9" - updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" + if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" ]]; then + printlog "Running msupdate --list" + "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list + fi + updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps MSWD2019 ) ;; diff --git a/fragments/labels/mowgliiitsycal.sh b/fragments/labels/mowgliiitsycal.sh new file mode 100644 index 0000000..b4c0ce2 --- /dev/null +++ b/fragments/labels/mowgliiitsycal.sh @@ -0,0 +1,8 @@ +mowgliiitsycal) + name="Itsycal" + type="zip" + downloadURL=$(curl -fs https://s3.amazonaws.com/itsycal/itsycal.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2) + appNewVersion=$(curl -fs https://s3.amazonaws.com/itsycal/itsycal.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2) + expectedTeamID="HFT3T55WND" + ;; + diff --git a/fragments/labels/nudge.sh b/fragments/labels/nudge.sh new file mode 100644 index 0000000..804872d --- /dev/null +++ b/fragments/labels/nudge.sh @@ -0,0 +1,8 @@ +nudge) + name="Nudge" + type="pkg" + downloadURL=$(downloadURLFromGit macadmins Nudge ) + appNewVersion=$(versionFromGit macadmins Nudge ) + expectedTeamID="9GQZ7KUFR6" + archiveName="Nudge-[0-9.]*.pkg" + ;; diff --git a/fragments/labels/ottomatic.sh b/fragments/labels/ottomatic.sh new file mode 100644 index 0000000..f2e1c5a --- /dev/null +++ b/fragments/labels/ottomatic.sh @@ -0,0 +1,8 @@ +ottomatic) + name="Otto Matic" + type="dmg" + downloadURL=$(downloadURLFromGit jorio OttoMatic) + appNewVersion=$(versionFromGit jorio OttoMatic) + expectedTeamID="RVNL7XC27G" + ;; + diff --git a/fragments/labels/overflow.sh b/fragments/labels/overflow.sh new file mode 100644 index 0000000..6ca5eac --- /dev/null +++ b/fragments/labels/overflow.sh @@ -0,0 +1,8 @@ +overflow) + name="Overflow" + type="dmg" + downloadURL="$(curl -sL 'https://overflow.io/download/' | awk -F '"' '/app-updates.overflow.io\/packages\/updates\/osx_64/ { print $8; exit }')" + appNewVersion=$(echo "$downloadURL" | awk -F '-|[.]dmg' '{ print $(NF-1) }') + expectedTeamID="7TK7YSGJFF" + versionKey="CFBundleShortVersionString" + ;; diff --git a/fragments/labels/r.sh b/fragments/labels/r.sh index 3151eba..1c98852 100644 --- a/fragments/labels/r.sh +++ b/fragments/labels/r.sh @@ -1,8 +1,7 @@ r) - # credit: Tadayuki Onishi (@kenchan0130) name="R" type="pkg" - downloadURL=$( curl -fsL https://formulae.brew.sh/api/cask/r.json | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p' ) - appNewVersion=$(curl -fsL https://formulae.brew.sh/api/cask/r.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p') + downloadURL="https://cloud.r-project.org/bin/macosx/$( curl -fsL https://cloud.r-project.org/bin/macosx/ | grep -m 1 -o '' | sed -E 's/.+"(.+)".+/\1/g' )" + appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') expectedTeamID="VZLD955F6P" ;; diff --git a/fragments/labels/sequelpro.sh b/fragments/labels/sequelpro.sh new file mode 100644 index 0000000..9e7af69 --- /dev/null +++ b/fragments/labels/sequelpro.sh @@ -0,0 +1,7 @@ +sequelpro) + name="Sequel Pro" + type="dmg" + downloadURL="$(downloadURLFromGit sequelpro sequelpro)" + appNewVersion="$(versionFromGit sequelpro sequelpro)" + expectedTeamID="Media" + ;; diff --git a/fragments/labels/smartgit.sh b/fragments/labels/smartgit.sh index 347c402..7abb0ad 100644 --- a/fragments/labels/smartgit.sh +++ b/fragments/labels/smartgit.sh @@ -1,7 +1,11 @@ smartgit) name="SmartGit" type="dmg" - downloadURL="https://www.syntevo.com$(curl -fs "https://www.syntevo.com/smartgit/download/" | grep -i -o -E "/downloads/.*/smartgit.*\.dmg")" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://www.syntevo.com$(curl -fs "https://www.syntevo.com/smartgit/download/" | grep -i -o -E "/downloads/.*/smartgit.*\.dmg" | tail -1)" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://www.syntevo.com$(curl -fs "https://www.syntevo.com/smartgit/download/" | grep -i -o -E "/downloads/.*/smartgit.*\.dmg" | head -1)" + fi appNewVersion="$(curl -fs "https://www.syntevo.com/smartgit/changelog.txt" | grep -i -E "SmartGit *[0-9.]* *.*" | head -1 | awk '{print $2}')" expectedTeamID="PHMY45PTNW" ;; diff --git a/fragments/labels/superhuman.sh b/fragments/labels/superhuman.sh new file mode 100644 index 0000000..f64f8b8 --- /dev/null +++ b/fragments/labels/superhuman.sh @@ -0,0 +1,11 @@ +superhuman) + name="superhuman" + type="dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://download.superhuman.com/Superhuman-arm64.dmg" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://download.superhuman.com/Superhuman.dmg" + fi + appNewVersion=$(curl -fs "https://storage.googleapis.com/download.superhuman.com/supertron-update/latest-mac.yml" | head -1 | cut -d " " -f2) + expectedTeamID="6XHFYUTQGX" + ;; diff --git a/fragments/labels/talkdeskcallbar.sh b/fragments/labels/talkdeskcallbar.sh new file mode 100644 index 0000000..9487d44 --- /dev/null +++ b/fragments/labels/talkdeskcallbar.sh @@ -0,0 +1,7 @@ +talkdeskcallbar) + name="Callbar" + type="dmg" + downloadURL=https://downloadcallbar.talkdesk.com/Callbar-$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p').dmg + appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p') + expectedTeamID="YGGJX44TB8" + ;; diff --git a/fragments/main.sh b/fragments/main.sh index dfba2c9..55cfa52 100644 --- a/fragments/main.sh +++ b/fragments/main.sh @@ -117,6 +117,10 @@ printlog "appversion: $appversion" # MARK: Exit if new version is the same as installed version (appNewVersion specified) # credit: Søren Theilgaard (@theilgaard) +if [[ $INSTALL == "force" ]]; then + printlog "Using force to install, so not using updateTool." + updateTool="" +fi if [[ -n $appNewVersion ]]; then printlog "Latest version of $name is $appNewVersion" if [[ $appversion == $appNewVersion ]]; then @@ -129,9 +133,6 @@ if [[ -n $appNewVersion ]]; then displaynotification "$message" "No update for $name!" fi cleanupAndExit 0 "No newer version." - else - printlog "Using force to install anyway. Not using updateTool." - updateTool="" fi else printlog "DEBUG mode enabled, not exiting, but there is no new version of app." @@ -139,10 +140,6 @@ if [[ -n $appNewVersion ]]; then fi else printlog "Latest version not specified." - if [[ $INSTALL == "force" ]]; then - printlog "Using force to install, so not using updateTool." - updateTool="" - fi fi # MARK: check if this is an Update and we can use updateTool @@ -169,14 +166,22 @@ else printlog "Downloading $downloadURL to $archiveName" if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then printlog "notifying" - displaynotification "Downloading $name update" "Download in progress …" + if [[ $updateDetected == "YES" ]]; then + displaynotification "Downloading $name update" "Download in progress …" + else + displaynotification "Downloading new $name" "Download in progress …" + fi fi if ! curl --location --fail --silent "$downloadURL" -o "$archiveName"; then printlog "error downloading $downloadURL" message="$name update/installation failed. This will be logged, so IT can follow up." if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then printlog "notifying" - displaynotification "$message" "Error installing/updating $name" + if [[ $updateDetected == "YES" ]]; then + displaynotification "$message" "Error updating $name" + else + displaynotification "$message" "Error installing $name" + fi fi cleanupAndExit 2 fi @@ -199,7 +204,17 @@ fi printlog "Installing $name" if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then printlog "notifying" - displaynotification "Installing $name" "Installation in progress …" + if [[ $updateDetected == "YES" ]]; then + displaynotification "Updating $name" "Installation in progress …" + else + displaynotification "Installing $name" "Installation in progress …" + fi +fi + +if [ -n "$installerTool" ]; then + # installerTool defined, and we use that for installation + printlog "installerTool used: $installerTool" + appName="$installerTool" fi case $type in diff --git a/utils/buildLabel.sh b/utils/buildLabel.sh index ec70022..6d74380 100755 --- a/utils/buildLabel.sh +++ b/utils/buildLabel.sh @@ -61,9 +61,9 @@ versionFromGit() { pkgInvestigation() { echo "Package investigation." - teamID=$(spctl -a -vv -t install "$archiveName" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' ) + teamID=$(spctl -a -vv -t install "$pkgPath" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' ) if [[ -z $teamID ]]; then - echo "Error verifying PKG: $archiveName" + echo "Error verifying PKG: $pkgPath" echo "No TeamID found." exit 4 fi