From dcba9f9eb7cdae09cd4acf619e6024f6c3c7e522 Mon Sep 17 00:00:00 2001
From: Armin Briegel <1933192+scriptingosx@users.noreply.github.com>
Date: Mon, 16 Aug 2021 15:49:43 +0200
Subject: [PATCH] new labels after merge
---
Installomator.sh.orig | 3638 -----------------
fragments/labels/1password7.txt | 10 +
fragments/labels/4kvideodownloader.txt | 9 +
fragments/labels/8x8.txt | 10 +
fragments/labels/abstract.txt | 8 +
fragments/labels/adobebrackets.txt | 8 +
fragments/labels/adobeconnect.txt | 11 +
fragments/labels/adobereaderdc-update.txt | 10 +
fragments/labels/adobereaderdc.txt | 12 +
fragments/labels/aircall.txt | 8 +
fragments/labels/airserver.txt | 9 +
fragments/labels/aldente.txt | 8 +
fragments/labels/alfred.txt | 10 +
fragments/labels/alttab.txt | 8 +
fragments/labels/amazonchime.txt | 9 +
fragments/labels/amazonworkspaces.txt | 9 +
fragments/labels/androidfiletransfer.txt | 8 +
fragments/labels/anydesk.txt | 8 +
fragments/labels/apparency.txt | 7 +
fragments/labels/appcleaner.txt | 9 +
fragments/labels/applenyfonts.txt | 8 +
fragments/labels/applesfcompact.txt | 8 +
fragments/labels/applesfmono.txt | 8 +
fragments/labels/applesfpro.txt | 8 +
fragments/labels/aquaskk.txt | 9 +
fragments/labels/arq7.txt | 9 +
fragments/labels/atext.txt | 8 +
fragments/labels/atom.txt | 9 +
fragments/labels/audacity.txt | 9 +
fragments/labels/autodmg.txt | 9 +
fragments/labels/autopkgr.txt | 10 +
fragments/labels/aviatrix.txt | 8 +
fragments/labels/awscli2.txt | 10 +
fragments/labels/awsvpnclient.txt | 9 +
fragments/labels/balenaetcher.txt | 8 +
fragments/labels/balsamiqwireframes.txt | 8 +
fragments/labels/bartender.txt | 8 +
fragments/labels/basecamp3.txt | 9 +
fragments/labels/bbedit.txt | 8 +
fragments/labels/bettertouchtool.txt | 9 +
fragments/labels/bitwarden.txt | 8 +
fragments/labels/blender.txt | 8 +
fragments/labels/bluejeans.txt | 12 +
fragments/labels/boxdrive.txt | 13 +
fragments/labels/brave.txt | 18 +
fragments/labels/brokenappname.txt | 7 +
fragments/labels/brokendownloadurl.txt | 7 +
fragments/labels/brokenteamid.txt | 7 +
fragments/labels/caffeine.txt | 9 +
fragments/labels/cakebrew.txt | 8 +
fragments/labels/calibre.txt | 9 +
fragments/labels/camostudio.txt | 9 +
fragments/labels/camtasia.txt | 7 +
fragments/labels/citrixworkspace.txt | 9 +
fragments/labels/clevershare2.txt | 10 +
fragments/labels/clickshare.txt | 8 +
fragments/labels/code42.txt | 9 +
fragments/labels/coderunner.txt | 8 +
fragments/labels/cormorant.txt | 9 +
fragments/labels/cryptomator.txt | 8 +
fragments/labels/cyberduck.txt | 8 +
fragments/labels/dangerzone.txt | 8 +
fragments/labels/darktable.txt | 9 +
fragments/labels/dbeaverce.txt | 8 +
fragments/labels/debookee.txt | 7 +
fragments/labels/defaultfolderx.txt | 8 +
fragments/labels/depnotify.txt | 8 +
fragments/labels/desktoppr.txt | 10 +
fragments/labels/detectxswift.txt | 9 +
fragments/labels/devonthink.txt | 13 +
fragments/labels/dialpad.txt | 8 +
fragments/labels/discord.txt | 7 +
fragments/labels/docker.txt | 14 +
fragments/labels/drift.txt | 8 +
fragments/labels/dropbox.txt | 7 +
fragments/labels/easeusdatarecoverywizard.txt | 10 +
fragments/labels/egnyte.txt | 9 +
fragments/labels/element.txt | 8 +
fragments/labels/eraseinstall.txt | 7 +
fragments/labels/etrecheck.txt | 8 +
fragments/labels/evernote.txt | 9 +
fragments/labels/exelbanstats.txt | 9 +
fragments/labels/fantastical.txt | 9 +
fragments/labels/favro.txt | 8 +
fragments/labels/ferdi.txt | 8 +
fragments/labels/figma.txt | 7 +
fragments/labels/firefox.txt | 9 +
fragments/labels/firefox_da.txt | 9 +
fragments/labels/firefox_intl.txt | 24 +
fragments/labels/firefoxesr.txt | 10 +
fragments/labels/firefoxesr_intl.txt | 25 +
fragments/labels/firefoxpkg.txt | 8 +
fragments/labels/front.txt | 8 +
fragments/labels/fsmonitor.txt | 7 +
fragments/labels/gimp.txt | 8 +
fragments/labels/githubdesktop.txt | 12 +
fragments/labels/golang.txt | 13 +
fragments/labels/googlechrome.txt | 15 +
fragments/labels/googlechromepkg.txt | 14 +
fragments/labels/googledrive.txt | 11 +
fragments/labels/googledrivebackupandsync.txt | 7 +
fragments/labels/googleearth.txt | 7 +
fragments/labels/googlejapaneseinput.txt | 10 +
fragments/labels/googlesoftwareupdate.txt | 9 +
fragments/labels/gotomeeting.txt | 8 +
fragments/labels/gpgsuite.txt | 9 +
fragments/labels/gpgsync.txt | 8 +
fragments/labels/grandperspective.txt | 7 +
fragments/labels/grasshopper.txt | 9 +
fragments/labels/gyazo.txt | 9 +
fragments/labels/gyazogif.txt | 10 +
fragments/labels/hancock.txt | 9 +
fragments/labels/handbrake.txt | 9 +
fragments/labels/hazel.txt | 10 +
fragments/labels/hpeasyadmin.txt | 8 +
fragments/labels/hpeasystart.txt | 8 +
fragments/labels/hyper.txt | 13 +
fragments/labels/icons.txt | 9 +
fragments/labels/imazingprofileeditor.txt | 8 +
fragments/labels/inkscape.txt | 9 +
fragments/labels/installomator_theile.txt | 12 +
fragments/labels/istatmenus.txt | 10 +
fragments/labels/iterm2.txt | 9 +
fragments/labels/jabradirect.txt | 8 +
fragments/labels/jamfconnect.txt | 8 +
fragments/labels/jamfmigrator.txt | 9 +
fragments/labels/jamfpppcutility.txt | 9 +
fragments/labels/jamfreenroller.txt | 9 +
fragments/labels/jetbrainsintellijidea.txt | 9 +
fragments/labels/jetbrainsintellijideace.txt | 9 +
fragments/labels/jetbrainsphpstorm.txt | 9 +
fragments/labels/jetbrainspycharm.txt | 14 +
fragments/labels/jetbrainspycharmce.txt | 13 +
fragments/labels/karabinerelements.txt | 9 +
fragments/labels/keepassxc.txt | 13 +
fragments/labels/keka.txt | 8 +
fragments/labels/keyboardmaestro.txt | 11 +
fragments/labels/klokki.txt | 8 +
fragments/labels/knockknock.txt | 9 +
fragments/labels/krisp.txt | 8 +
fragments/labels/krita.txt | 9 +
fragments/labels/lastpass.txt | 8 +
fragments/labels/launchbar.txt | 8 +
fragments/labels/lexarrecoverytool.txt | 10 +
fragments/labels/libreoffice.txt | 9 +
fragments/labels/logitechoptions.txt | 10 +
fragments/labels/longversion.txt | 6 +
fragments/labels/loom.txt | 9 +
fragments/labels/lucifer.txt | 9 +
fragments/labels/lulu.txt | 9 +
fragments/labels/macfuse.txt | 8 +
fragments/labels/malwarebytes.txt | 8 +
fragments/labels/mattermost.txt | 13 +
fragments/labels/menumeters.txt | 8 +
fragments/labels/microsoftautoupdate.txt | 13 +
fragments/labels/microsoftcompanyportal.txt | 11 +
fragments/labels/microsoftdefenderatp.txt | 11 +
fragments/labels/microsoftedge.txt | 12 +
.../labels/microsoftedgeenterprisestable.txt | 11 +
fragments/labels/microsoftexcel.txt | 11 +
.../labels/microsoftlicenseremovaltool.txt | 10 +
fragments/labels/microsoftoffice365.txt | 14 +
.../labels/microsoftofficebusinesspro.txt | 12 +
fragments/labels/microsoftonedrive.txt | 11 +
fragments/labels/microsoftonenote.txt | 11 +
fragments/labels/microsoftoutlook.txt | 11 +
fragments/labels/microsoftpowerpoint.txt | 11 +
fragments/labels/microsoftremotedesktop.txt | 11 +
.../labels/microsoftsharepointplugin.txt | 10 +
.../labels/microsoftskypeforbusiness.txt | 11 +
fragments/labels/microsoftteams.txt | 14 +
.../labels/microsoftvisualstudiocode.txt | 12 +
fragments/labels/microsoftword.txt | 11 +
fragments/labels/microsoftyammer.txt | 11 +
fragments/labels/miro.txt | 8 +
fragments/labels/musescore.txt | 8 +
fragments/labels/netnewswire.txt | 9 +
fragments/labels/nextcloud.txt | 13 +
fragments/labels/nomad.txt | 9 +
fragments/labels/nomadlogin.txt | 9 +
fragments/labels/notion.txt | 14 +
fragments/labels/nvivo.txt | 10 +
fragments/labels/obs.txt | 8 +
fragments/labels/obsidian.txt | 9 +
fragments/labels/odrive.txt | 10 +
fragments/labels/omnidisksweeper.txt | 8 +
fragments/labels/omnifocus3.txt | 8 +
fragments/labels/omnigraffle6.txt | 8 +
fragments/labels/omnigraffle7.txt | 8 +
fragments/labels/omnioutliner5.txt | 8 +
fragments/labels/omniplan3.txt | 8 +
fragments/labels/omniplan4.txt | 8 +
fragments/labels/omnipresence.txt | 8 +
fragments/labels/onionshare.txt | 10 +
fragments/labels/onlyofficedesktop.txt | 7 +
fragments/labels/openvpnconnect.txt | 9 +
fragments/labels/openvpnconnectv3.txt | 8 +
fragments/labels/opera.txt | 10 +
fragments/labels/pacifist.txt | 7 +
fragments/labels/pdfsam.txt | 8 +
fragments/labels/pitch.txt | 7 +
fragments/labels/plantronicshub.txt | 8 +
fragments/labels/plisteditpro.txt | 7 +
fragments/labels/postman.txt | 9 +
fragments/labels/prism9.txt | 8 +
fragments/labels/privileges.txt | 9 +
fragments/labels/proctortrack.txt | 8 +
fragments/labels/promiseutilityr.txt | 8 +
fragments/labels/proxyman.txt | 14 +
fragments/labels/r.txt | 9 +
fragments/labels/ramboxce.txt | 8 +
fragments/labels/rectangle.txt | 8 +
fragments/labels/redeye.txt | 9 +
fragments/labels/resiliosynchome.txt | 7 +
fragments/labels/retrobatch.txt | 8 +
fragments/labels/ricohpsprinters.txt | 8 +
fragments/labels/ringcentralapp.txt | 9 +
fragments/labels/ringcentralclassicapp.txt | 9 +
fragments/labels/ringcentralmeetings.txt | 9 +
fragments/labels/ringcentralphone.txt | 9 +
fragments/labels/rocket.txt | 7 +
fragments/labels/rocketchat.txt | 9 +
fragments/labels/royaltsx.txt | 8 +
fragments/labels/rstudio.txt | 8 +
fragments/labels/santa.txt | 10 +
fragments/labels/screamingfrogseospider.txt | 7 +
fragments/labels/screenflick.txt | 8 +
fragments/labels/sfsymbols.txt | 7 +
fragments/labels/shield.txt | 9 +
fragments/labels/sidekick.txt | 8 +
fragments/labels/signal.txt | 9 +
fragments/labels/silnite.txt | 10 +
fragments/labels/sirimote.txt | 8 +
fragments/labels/sizeup.txt | 9 +
fragments/labels/sketch.txt | 16 +
fragments/labels/slack.txt | 14 +
fragments/labels/snagit.txt | 9 +
fragments/labels/snapgeneviewer.txt | 9 +
fragments/labels/sonos.txt | 9 +
fragments/labels/sonoss2.txt | 7 +
fragments/labels/sourcetree.txt | 9 +
fragments/labels/spotify.txt | 8 +
fragments/labels/sublimetext.txt | 9 +
fragments/labels/supportapp.txt | 10 +
fragments/labels/suspiciouspackage.txt | 9 +
.../swiftruntimeforcommandlinetools.txt | 8 +
fragments/labels/tableaudesktop.txt | 8 +
fragments/labels/tableaureader.txt | 8 +
fragments/labels/taskpaper.txt | 8 +
fragments/labels/teamviewer.txt | 10 +
fragments/labels/teamviewerhost.txt | 10 +
fragments/labels/teamviewerqs.txt | 10 +
fragments/labels/techsmithcapture.txt | 8 +
fragments/labels/telegram.txt | 8 +
fragments/labels/textexpander.txt | 8 +
fragments/labels/textmate.txt | 9 +
fragments/labels/theunarchiver.txt | 9 +
fragments/labels/things.txt | 7 +
fragments/labels/thunderbird.txt | 8 +
fragments/labels/tigervnc.txt | 7 +
fragments/labels/toggltrack.txt | 8 +
fragments/labels/torbrowser.txt | 9 +
fragments/labels/trex.txt | 9 +
fragments/labels/tunnelbear.txt | 7 +
fragments/labels/tunnelblick.txt | 7 +
fragments/labels/umbrellaroamingclient.txt | 8 +
fragments/labels/uniconverter.txt | 8 +
fragments/labels/universaltypeclient.txt | 8 +
fragments/labels/vagrant.txt | 12 +
fragments/labels/valuesfromarguments.txt | 19 +
fragments/labels/vanilla.txt | 7 +
fragments/labels/veracrypt.txt | 10 +
fragments/labels/version.txt | 6 +
fragments/labels/virtualbox.txt | 11 +
fragments/labels/viscosity.txt | 9 +
fragments/labels/vivaldi.txt | 9 +
fragments/labels/vlc.txt | 13 +
fragments/labels/vmwarehorizonclient.txt | 9 +
fragments/labels/vscodium.txt | 12 +
fragments/labels/webex.txt | 13 +
fragments/labels/webexmeetings.txt | 11 +
fragments/labels/whatsapp.txt | 7 +
fragments/labels/wickrme.txt | 10 +
fragments/labels/wickrpro.txt | 10 +
fragments/labels/wireshark.txt | 9 +
fragments/labels/wwdc.txt | 9 +
fragments/labels/xeroxphaser7800.txt | 7 +
fragments/labels/xink.txt | 8 +
fragments/labels/xquartz.txt | 9 +
fragments/labels/yubikeymanagerqt.txt | 10 +
fragments/labels/zappy.txt | 7 +
fragments/labels/zoom.txt | 10 +
fragments/labels/zoomclient.txt | 12 +
fragments/labels/zoomrooms.txt | 25 +
fragments/labels/zulujdk13.txt | 16 +
fragments/labels/zulujdk15.txt | 16 +
296 files changed, 2769 insertions(+), 3638 deletions(-)
delete mode 100755 Installomator.sh.orig
create mode 100644 fragments/labels/1password7.txt
create mode 100644 fragments/labels/4kvideodownloader.txt
create mode 100644 fragments/labels/8x8.txt
create mode 100644 fragments/labels/abstract.txt
create mode 100644 fragments/labels/adobebrackets.txt
create mode 100644 fragments/labels/adobeconnect.txt
create mode 100644 fragments/labels/adobereaderdc-update.txt
create mode 100644 fragments/labels/adobereaderdc.txt
create mode 100644 fragments/labels/aircall.txt
create mode 100644 fragments/labels/airserver.txt
create mode 100644 fragments/labels/aldente.txt
create mode 100644 fragments/labels/alfred.txt
create mode 100644 fragments/labels/alttab.txt
create mode 100644 fragments/labels/amazonchime.txt
create mode 100644 fragments/labels/amazonworkspaces.txt
create mode 100644 fragments/labels/androidfiletransfer.txt
create mode 100644 fragments/labels/anydesk.txt
create mode 100644 fragments/labels/apparency.txt
create mode 100644 fragments/labels/appcleaner.txt
create mode 100644 fragments/labels/applenyfonts.txt
create mode 100644 fragments/labels/applesfcompact.txt
create mode 100644 fragments/labels/applesfmono.txt
create mode 100644 fragments/labels/applesfpro.txt
create mode 100644 fragments/labels/aquaskk.txt
create mode 100644 fragments/labels/arq7.txt
create mode 100644 fragments/labels/atext.txt
create mode 100644 fragments/labels/atom.txt
create mode 100644 fragments/labels/audacity.txt
create mode 100644 fragments/labels/autodmg.txt
create mode 100644 fragments/labels/autopkgr.txt
create mode 100644 fragments/labels/aviatrix.txt
create mode 100644 fragments/labels/awscli2.txt
create mode 100644 fragments/labels/awsvpnclient.txt
create mode 100644 fragments/labels/balenaetcher.txt
create mode 100644 fragments/labels/balsamiqwireframes.txt
create mode 100644 fragments/labels/bartender.txt
create mode 100644 fragments/labels/basecamp3.txt
create mode 100644 fragments/labels/bbedit.txt
create mode 100644 fragments/labels/bettertouchtool.txt
create mode 100644 fragments/labels/bitwarden.txt
create mode 100644 fragments/labels/blender.txt
create mode 100644 fragments/labels/bluejeans.txt
create mode 100644 fragments/labels/boxdrive.txt
create mode 100644 fragments/labels/brave.txt
create mode 100644 fragments/labels/brokenappname.txt
create mode 100644 fragments/labels/brokendownloadurl.txt
create mode 100644 fragments/labels/brokenteamid.txt
create mode 100644 fragments/labels/caffeine.txt
create mode 100644 fragments/labels/cakebrew.txt
create mode 100644 fragments/labels/calibre.txt
create mode 100644 fragments/labels/camostudio.txt
create mode 100644 fragments/labels/camtasia.txt
create mode 100644 fragments/labels/citrixworkspace.txt
create mode 100644 fragments/labels/clevershare2.txt
create mode 100644 fragments/labels/clickshare.txt
create mode 100644 fragments/labels/code42.txt
create mode 100644 fragments/labels/coderunner.txt
create mode 100644 fragments/labels/cormorant.txt
create mode 100644 fragments/labels/cryptomator.txt
create mode 100644 fragments/labels/cyberduck.txt
create mode 100644 fragments/labels/dangerzone.txt
create mode 100644 fragments/labels/darktable.txt
create mode 100644 fragments/labels/dbeaverce.txt
create mode 100644 fragments/labels/debookee.txt
create mode 100644 fragments/labels/defaultfolderx.txt
create mode 100644 fragments/labels/depnotify.txt
create mode 100644 fragments/labels/desktoppr.txt
create mode 100644 fragments/labels/detectxswift.txt
create mode 100644 fragments/labels/devonthink.txt
create mode 100644 fragments/labels/dialpad.txt
create mode 100644 fragments/labels/discord.txt
create mode 100644 fragments/labels/docker.txt
create mode 100644 fragments/labels/drift.txt
create mode 100644 fragments/labels/dropbox.txt
create mode 100644 fragments/labels/easeusdatarecoverywizard.txt
create mode 100644 fragments/labels/egnyte.txt
create mode 100644 fragments/labels/element.txt
create mode 100644 fragments/labels/eraseinstall.txt
create mode 100644 fragments/labels/etrecheck.txt
create mode 100644 fragments/labels/evernote.txt
create mode 100644 fragments/labels/exelbanstats.txt
create mode 100644 fragments/labels/fantastical.txt
create mode 100644 fragments/labels/favro.txt
create mode 100644 fragments/labels/ferdi.txt
create mode 100644 fragments/labels/figma.txt
create mode 100644 fragments/labels/firefox.txt
create mode 100644 fragments/labels/firefox_da.txt
create mode 100644 fragments/labels/firefox_intl.txt
create mode 100644 fragments/labels/firefoxesr.txt
create mode 100644 fragments/labels/firefoxesr_intl.txt
create mode 100644 fragments/labels/firefoxpkg.txt
create mode 100644 fragments/labels/front.txt
create mode 100644 fragments/labels/fsmonitor.txt
create mode 100644 fragments/labels/gimp.txt
create mode 100644 fragments/labels/githubdesktop.txt
create mode 100644 fragments/labels/golang.txt
create mode 100644 fragments/labels/googlechrome.txt
create mode 100644 fragments/labels/googlechromepkg.txt
create mode 100644 fragments/labels/googledrive.txt
create mode 100644 fragments/labels/googledrivebackupandsync.txt
create mode 100644 fragments/labels/googleearth.txt
create mode 100644 fragments/labels/googlejapaneseinput.txt
create mode 100644 fragments/labels/googlesoftwareupdate.txt
create mode 100644 fragments/labels/gotomeeting.txt
create mode 100644 fragments/labels/gpgsuite.txt
create mode 100644 fragments/labels/gpgsync.txt
create mode 100644 fragments/labels/grandperspective.txt
create mode 100644 fragments/labels/grasshopper.txt
create mode 100644 fragments/labels/gyazo.txt
create mode 100644 fragments/labels/gyazogif.txt
create mode 100644 fragments/labels/hancock.txt
create mode 100644 fragments/labels/handbrake.txt
create mode 100644 fragments/labels/hazel.txt
create mode 100644 fragments/labels/hpeasyadmin.txt
create mode 100644 fragments/labels/hpeasystart.txt
create mode 100644 fragments/labels/hyper.txt
create mode 100644 fragments/labels/icons.txt
create mode 100644 fragments/labels/imazingprofileeditor.txt
create mode 100644 fragments/labels/inkscape.txt
create mode 100644 fragments/labels/installomator_theile.txt
create mode 100644 fragments/labels/istatmenus.txt
create mode 100644 fragments/labels/iterm2.txt
create mode 100644 fragments/labels/jabradirect.txt
create mode 100644 fragments/labels/jamfconnect.txt
create mode 100644 fragments/labels/jamfmigrator.txt
create mode 100644 fragments/labels/jamfpppcutility.txt
create mode 100644 fragments/labels/jamfreenroller.txt
create mode 100644 fragments/labels/jetbrainsintellijidea.txt
create mode 100644 fragments/labels/jetbrainsintellijideace.txt
create mode 100644 fragments/labels/jetbrainsphpstorm.txt
create mode 100644 fragments/labels/jetbrainspycharm.txt
create mode 100644 fragments/labels/jetbrainspycharmce.txt
create mode 100644 fragments/labels/karabinerelements.txt
create mode 100644 fragments/labels/keepassxc.txt
create mode 100644 fragments/labels/keka.txt
create mode 100644 fragments/labels/keyboardmaestro.txt
create mode 100644 fragments/labels/klokki.txt
create mode 100644 fragments/labels/knockknock.txt
create mode 100644 fragments/labels/krisp.txt
create mode 100644 fragments/labels/krita.txt
create mode 100644 fragments/labels/lastpass.txt
create mode 100644 fragments/labels/launchbar.txt
create mode 100644 fragments/labels/lexarrecoverytool.txt
create mode 100644 fragments/labels/libreoffice.txt
create mode 100644 fragments/labels/logitechoptions.txt
create mode 100644 fragments/labels/longversion.txt
create mode 100644 fragments/labels/loom.txt
create mode 100644 fragments/labels/lucifer.txt
create mode 100644 fragments/labels/lulu.txt
create mode 100644 fragments/labels/macfuse.txt
create mode 100644 fragments/labels/malwarebytes.txt
create mode 100644 fragments/labels/mattermost.txt
create mode 100644 fragments/labels/menumeters.txt
create mode 100644 fragments/labels/microsoftautoupdate.txt
create mode 100644 fragments/labels/microsoftcompanyportal.txt
create mode 100644 fragments/labels/microsoftdefenderatp.txt
create mode 100644 fragments/labels/microsoftedge.txt
create mode 100644 fragments/labels/microsoftedgeenterprisestable.txt
create mode 100644 fragments/labels/microsoftexcel.txt
create mode 100644 fragments/labels/microsoftlicenseremovaltool.txt
create mode 100644 fragments/labels/microsoftoffice365.txt
create mode 100644 fragments/labels/microsoftofficebusinesspro.txt
create mode 100644 fragments/labels/microsoftonedrive.txt
create mode 100644 fragments/labels/microsoftonenote.txt
create mode 100644 fragments/labels/microsoftoutlook.txt
create mode 100644 fragments/labels/microsoftpowerpoint.txt
create mode 100644 fragments/labels/microsoftremotedesktop.txt
create mode 100644 fragments/labels/microsoftsharepointplugin.txt
create mode 100644 fragments/labels/microsoftskypeforbusiness.txt
create mode 100644 fragments/labels/microsoftteams.txt
create mode 100644 fragments/labels/microsoftvisualstudiocode.txt
create mode 100644 fragments/labels/microsoftword.txt
create mode 100644 fragments/labels/microsoftyammer.txt
create mode 100644 fragments/labels/miro.txt
create mode 100644 fragments/labels/musescore.txt
create mode 100644 fragments/labels/netnewswire.txt
create mode 100644 fragments/labels/nextcloud.txt
create mode 100644 fragments/labels/nomad.txt
create mode 100644 fragments/labels/nomadlogin.txt
create mode 100644 fragments/labels/notion.txt
create mode 100644 fragments/labels/nvivo.txt
create mode 100644 fragments/labels/obs.txt
create mode 100644 fragments/labels/obsidian.txt
create mode 100644 fragments/labels/odrive.txt
create mode 100644 fragments/labels/omnidisksweeper.txt
create mode 100644 fragments/labels/omnifocus3.txt
create mode 100644 fragments/labels/omnigraffle6.txt
create mode 100644 fragments/labels/omnigraffle7.txt
create mode 100644 fragments/labels/omnioutliner5.txt
create mode 100644 fragments/labels/omniplan3.txt
create mode 100644 fragments/labels/omniplan4.txt
create mode 100644 fragments/labels/omnipresence.txt
create mode 100644 fragments/labels/onionshare.txt
create mode 100644 fragments/labels/onlyofficedesktop.txt
create mode 100644 fragments/labels/openvpnconnect.txt
create mode 100644 fragments/labels/openvpnconnectv3.txt
create mode 100644 fragments/labels/opera.txt
create mode 100644 fragments/labels/pacifist.txt
create mode 100644 fragments/labels/pdfsam.txt
create mode 100644 fragments/labels/pitch.txt
create mode 100644 fragments/labels/plantronicshub.txt
create mode 100644 fragments/labels/plisteditpro.txt
create mode 100644 fragments/labels/postman.txt
create mode 100644 fragments/labels/prism9.txt
create mode 100644 fragments/labels/privileges.txt
create mode 100644 fragments/labels/proctortrack.txt
create mode 100644 fragments/labels/promiseutilityr.txt
create mode 100644 fragments/labels/proxyman.txt
create mode 100644 fragments/labels/r.txt
create mode 100644 fragments/labels/ramboxce.txt
create mode 100644 fragments/labels/rectangle.txt
create mode 100644 fragments/labels/redeye.txt
create mode 100644 fragments/labels/resiliosynchome.txt
create mode 100644 fragments/labels/retrobatch.txt
create mode 100644 fragments/labels/ricohpsprinters.txt
create mode 100644 fragments/labels/ringcentralapp.txt
create mode 100644 fragments/labels/ringcentralclassicapp.txt
create mode 100644 fragments/labels/ringcentralmeetings.txt
create mode 100644 fragments/labels/ringcentralphone.txt
create mode 100644 fragments/labels/rocket.txt
create mode 100644 fragments/labels/rocketchat.txt
create mode 100644 fragments/labels/royaltsx.txt
create mode 100644 fragments/labels/rstudio.txt
create mode 100644 fragments/labels/santa.txt
create mode 100644 fragments/labels/screamingfrogseospider.txt
create mode 100644 fragments/labels/screenflick.txt
create mode 100644 fragments/labels/sfsymbols.txt
create mode 100644 fragments/labels/shield.txt
create mode 100644 fragments/labels/sidekick.txt
create mode 100644 fragments/labels/signal.txt
create mode 100644 fragments/labels/silnite.txt
create mode 100644 fragments/labels/sirimote.txt
create mode 100644 fragments/labels/sizeup.txt
create mode 100644 fragments/labels/sketch.txt
create mode 100644 fragments/labels/slack.txt
create mode 100644 fragments/labels/snagit.txt
create mode 100644 fragments/labels/snapgeneviewer.txt
create mode 100644 fragments/labels/sonos.txt
create mode 100644 fragments/labels/sonoss2.txt
create mode 100644 fragments/labels/sourcetree.txt
create mode 100644 fragments/labels/spotify.txt
create mode 100644 fragments/labels/sublimetext.txt
create mode 100644 fragments/labels/supportapp.txt
create mode 100644 fragments/labels/suspiciouspackage.txt
create mode 100644 fragments/labels/swiftruntimeforcommandlinetools.txt
create mode 100644 fragments/labels/tableaudesktop.txt
create mode 100644 fragments/labels/tableaureader.txt
create mode 100644 fragments/labels/taskpaper.txt
create mode 100644 fragments/labels/teamviewer.txt
create mode 100644 fragments/labels/teamviewerhost.txt
create mode 100644 fragments/labels/teamviewerqs.txt
create mode 100644 fragments/labels/techsmithcapture.txt
create mode 100644 fragments/labels/telegram.txt
create mode 100644 fragments/labels/textexpander.txt
create mode 100644 fragments/labels/textmate.txt
create mode 100644 fragments/labels/theunarchiver.txt
create mode 100644 fragments/labels/things.txt
create mode 100644 fragments/labels/thunderbird.txt
create mode 100644 fragments/labels/tigervnc.txt
create mode 100644 fragments/labels/toggltrack.txt
create mode 100644 fragments/labels/torbrowser.txt
create mode 100644 fragments/labels/trex.txt
create mode 100644 fragments/labels/tunnelbear.txt
create mode 100644 fragments/labels/tunnelblick.txt
create mode 100644 fragments/labels/umbrellaroamingclient.txt
create mode 100644 fragments/labels/uniconverter.txt
create mode 100644 fragments/labels/universaltypeclient.txt
create mode 100644 fragments/labels/vagrant.txt
create mode 100644 fragments/labels/valuesfromarguments.txt
create mode 100644 fragments/labels/vanilla.txt
create mode 100644 fragments/labels/veracrypt.txt
create mode 100644 fragments/labels/version.txt
create mode 100644 fragments/labels/virtualbox.txt
create mode 100644 fragments/labels/viscosity.txt
create mode 100644 fragments/labels/vivaldi.txt
create mode 100644 fragments/labels/vlc.txt
create mode 100644 fragments/labels/vmwarehorizonclient.txt
create mode 100644 fragments/labels/vscodium.txt
create mode 100644 fragments/labels/webex.txt
create mode 100644 fragments/labels/webexmeetings.txt
create mode 100644 fragments/labels/whatsapp.txt
create mode 100644 fragments/labels/wickrme.txt
create mode 100644 fragments/labels/wickrpro.txt
create mode 100644 fragments/labels/wireshark.txt
create mode 100644 fragments/labels/wwdc.txt
create mode 100644 fragments/labels/xeroxphaser7800.txt
create mode 100644 fragments/labels/xink.txt
create mode 100644 fragments/labels/xquartz.txt
create mode 100644 fragments/labels/yubikeymanagerqt.txt
create mode 100644 fragments/labels/zappy.txt
create mode 100644 fragments/labels/zoom.txt
create mode 100644 fragments/labels/zoomclient.txt
create mode 100644 fragments/labels/zoomrooms.txt
create mode 100644 fragments/labels/zulujdk13.txt
create mode 100644 fragments/labels/zulujdk15.txt
diff --git a/Installomator.sh.orig b/Installomator.sh.orig
deleted file mode 100755
index b3e442e..0000000
--- a/Installomator.sh.orig
+++ /dev/null
@@ -1,3638 +0,0 @@
-#!/bin/zsh
-label="" # if no label is sent to the script, this will be used
-
-# Installomator
-#
-# Downloads and installs Applications
-# 2020-2021 Installomator
-#
-# inspired by the download scripts from William Smith and Sander Schram
-#
-# Contributers:
-# Armin Briegel - @scriptingosx
-# Isaac Ordonez - @issacatmann
-# Søren Theilgaard - @Theile
-# Adam Codega - @acodega
-#
-# with contributions from many others
-
-VERSION='0.6.0'
-<<<<<<< HEAD
-VERSIONDATE='2021-04-20'
-=======
-VERSIONDATE='2021-07-14'
->>>>>>> dev
-
-export PATH=/usr/bin:/bin:/usr/sbin:/sbin
-
-# NOTE: adjust these variables:
-
-# set to 0 for production, 1 for debugging
-# while debugging, items will be downloaded to the parent directory of this script
-# also no actual installation will be performed
-DEBUG=1
-
-# notify behavior
-NOTIFY=success
-# options:
-# - success notify the user on success
-# - silent no notifications
-# - all all notifications (great for Self Service installation)
-
-
-# behavior when blocking processes are found
-BLOCKING_PROCESS_ACTION=prompt_user
-# options:
-# - ignore continue even when blocking processes are found
-# - quit app will be told to quit nicely, if running
-# - quit_kill told to quit twice, then it will be killed
-# Could be great for service apps, if they do not respawn
-# - silent_fail exit script without prompt or installation
-# - prompt_user show a user dialog for each blocking process found
-# abort after three attempts to quit
-# (only if user accepts to quit the apps, otherwise
-# the update is cancelled).
-# - prompt_user_then_kill
-# show a user dialog for each blocking process found,
-# attempt to quit two times, kill the process finally
-# - prompt_user_loop
-# Like prompt-user, but clicking "Not Now", will just wait an hour,
-# and then it will ask again.
-# - tell_user User will be showed a notification about the important update,
-# but user is only allowed to quit and continue, and then we
-# ask the app to quit.
-# - tell_user_then_kill
-# Show dialog 2 times, and if the quitting fails, the
-# blocking processes will be killed.
-# - kill kill process without prompting or giving the user a chance to save
-
-
-# logo-icon used in dialog boxes if app is blocking
-LOGO=appstore
-# options:
-# - appstore Icon is Apple App Store (default)
-# - jamf JAMF Pro
-# - mosyleb Mosyle Business
-# - mosylem Mosyle Manager (Education)
-# - addigy Addigy
-# path can also be set in the command call, and if file exists, it will be used, like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"' (spaces are escaped).
-
-
-# install behavior
-INSTALL=""
-# options:
-# - When not set, software will only be installed
-# if it is newer/different in version
-# - force Install even if it’s the same version
-
-
-# Re-opening of closed app
-REOPEN="yes"
-# options:
-# - yes App wil be reopened if it was closed
-# - no App not reopened
-
-
-# NOTE: How labels work
-
-# Each workflow label needs to be listed in the case statement below.
-# for each label these variables can be set:
-#
-# - name: (required)
-# Name of the installed app.
-# This is used to derive many of the other variables.
-#
-# - type: (required)
-# The type of the installation. Possible values:
-# - dmg
-# - pkg
-# - zip
-# - tbz
-# - pkgInDmg
-# - pkgInZip
-# - appInDmgInZip
-# - updateronly This last one is for labels that should only run an updateTool (see below)
-#
-# - packageID: (optional)
-# The package ID of a pkg
-# If given, will be used to find version of installed software, instead of searching for an app.
-# Usefull if a pkg does not install an app.
-# See label installomator_st
-#
-# - downloadURL: (required)
-# URL to download the dmg.
-# Can be generated with a series of commands (see BBEdit for an example).
-#
-# - appNewVersion: (optional)
-# Version of the downloaded software.
-# If given, it will be compared to installed version, to see if download is different.
-# It does not check for newer or not, only different.
-#
-# - versionKey: (optional)
-# How we get version number from app. Possible values:
-# - CFBundleShortVersionString
-# - CFBundleVersion
-# Not all software titles uses fields the same.
-# See Opera label.
-#
-# - appCustomVersion(){}: (optional function)
-# This function can be added to your label, if a specific custom
-# mechanism hs to be used for getting the installed version.
-# See labels zulujdk11, zulujdk13, zulujdk15
-#
-# - expectedTeamID: (required)
-# 10-digit developer team ID.
-# Obtain the team ID by running:
-#
-# - Applications (in dmgs or zips)
-# spctl -a -vv /Applications/BBEdit.app
-#
-# - Pkgs
-# spctl -a -vv -t install ~/Downloads/desktoppr-0.2.pkg
-#
-# The team ID is the ten-digit ID at the end of the line starting with 'origin='
-#
-# - archiveName: (optional)
-# The name of the downloaded file.
-# When not given the archiveName is derived from the $name.
-#
-# - appName: (optional)
-# File name of the app bundle in the dmg to verify and copy (include .app).
-# When not given, the appName is derived from the $name.
-#
-# - targetDir: (optional)
-# dmg or zip:
-# Applications will be copied to this directory.
-# Default value is '/Applications' for dmg and zip installations.
-# pkg:
-# targetDir is used as the install-location. Default is '/'.
-#
-# - blockingProcesses: (optional)
-# Array of process names that will block the installation or update.
-# If no blockingProcesses array is given the default will be:
-# blockingProcesses=( $name )
-# When a package contains multiple applications, _all_ should be listed, e.g:
-# blockingProcesses=( "Keynote" "Pages" "Numbers" )
-# When a workflow has no blocking processes, use
-# blockingProcesses=( NONE )
-#
-# - pkgName: (optional, only used for pkgInDmg, dmgInZip, and appInDmgInZip)
-# File name of the pkg/dmg file _inside_ the dmg or zip
-# When not given the pkgName is derived from the $name
-#
-# - updateTool:
-# - updateToolArguments:
-# When Installomator detects an existing installation of the application,
-# and the updateTool variable is set
-# $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
-#
-# - updateToolRunAsCurrentUser:
-# When this variable is set (any value), $updateTool will be run as the current user.
-#
-
-
-# MARK: Functions
-
-cleanupAndExit() { # $1 = exit code, $2 message
- if [[ -n $2 && $1 -ne 0 ]]; then
- printlog "ERROR: $2"
- fi
- if [ "$DEBUG" -eq 0 ]; then
- # remove the temporary working directory when done
- printlog "Deleting $tmpDir"
- rm -Rf "$tmpDir"
- fi
-
- if [ -n "$dmgmount" ]; then
- # unmount disk image
- printlog "Unmounting $dmgmount"
- hdiutil detach "$dmgmount"
- fi
- # If we closed any processes, reopen the app again
- reopenClosedProcess
- printlog "################## End Installomator, exit code $1 \n\n"
- exit "$1"
-}
-
-runAsUser() {
- if [[ $currentUser != "loginwindow" ]]; then
- uid=$(id -u "$currentUser")
- launchctl asuser $uid sudo -u $currentUser "$@"
- fi
-}
-
-reloadAsUser() {
- if [[ $currentUser != "loginwindow" ]]; then
- uid=$(id -u "$currentUser")
- su - $currentUser -c "${@}"
- fi
-}
-
-displaydialog() { # $1: message $2: title
- message=${1:-"Message"}
- title=${2:-"Installomator"}
- runAsUser osascript -e "button returned of (display dialog \"$message\" with title \"$title\" buttons {\"Not Now\", \"Quit and Update\"} default button \"Quit and Update\" with icon POSIX file \"$LOGO\")"
-}
-
-displaydialogContinue() { # $1: message $2: title
- message=${1:-"Message"}
- title=${2:-"Installomator"}
- runAsUser osascript -e "button returned of (display dialog \"$message\" with title \"$title\" buttons {\"Quit and Update\"} default button \"Quit and Update\" with icon POSIX file \"$LOGO\")"
-}
-
-displaynotification() { # $1: message $2: title
- message=${1:-"Message"}
- title=${2:-"Notification"}
- manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action"
-
- if [[ -x "$manageaction" ]]; then
- "$manageaction" -message "$message" -title "$title"
- else
- runAsUser osascript -e "display notification \"$message\" with title \"$title\""
- fi
-}
-
-
-# MARK: Logging
-log_location="/private/var/log/Installomator.log"
-
-printlog(){
-
- timestamp=$(date +%F\ %T)
-
- if [[ "$(whoami)" == "root" ]]; then
- echo "$timestamp" "$label" "$1" | tee -a $log_location
- else
- echo "$timestamp" "$label" "$1"
- fi
-}
-
-# will get the latest release download from a github repo
-downloadURLFromGit() { # $1 git user name, $2 git repo name
- gitusername=${1?:"no git user name"}
- gitreponame=${2?:"no git repo name"}
-
- if [[ $type == "pkgInDmg" ]]; then
- filetype="dmg"
- elif [[ $type == "pkgInZip" ]]; then
- filetype="zip"
- else
- filetype=$type
- fi
-
- if [ -n "$archiveName" ]; then
- downloadURL=$(curl --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
- | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
- else
- downloadURL=$(curl --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
- | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
- fi
- if [ -z "$downloadURL" ]; then
- cleanupAndExit 9 "could not retrieve download URL for $gitusername/$gitreponame"
- #exit 9
- else
- echo "$downloadURL"
- return 0
- fi
-}
-
-versionFromGit() {
- # credit: Søren Theilgaard (@theilgaard)
- # $1 git user name, $2 git repo name
- gitusername=${1?:"no git user name"}
- gitreponame=${2?:"no git repo name"}
-
- 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"
- appNewVersion=""
- else
- echo "$appNewVersion"
- return 0
- fi
-}
-
-
-# Handling of differences in xpath between Catalina and Big Sur
-xpath() {
- # the xpath tool changes in Big Sur and now requires the `-e` option
- if [[ $(sw_vers -buildVersion) > "20A" ]]; then
- /usr/bin/xpath -e $@
- # alternative: switch to xmllint (which is not perl)
- #xmllint --xpath $@ -
- else
- /usr/bin/xpath $@
- fi
-}
-
-
-getAppVersion() {
- # modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez
-
- # If label contain function appCustomVersion, we use that and return
- if type 'appCustomVersion' 2>/dev/null | grep -q 'function'; then
- appversion=$(appCustomVersion)
- printlog "Custom App Version detection is used, found $appversion"
- return
- fi
-
- # pkgs contains a version number, then we don't have to search for an app
- if [[ $packageID != "" ]]; then
- 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"
- return
- else
- printlog "No version found using packageID $packageID"
- fi
- fi
-
- # get app in /Applications, or /Applications/Utilities, or find using Spotlight
- if [[ -d "/Applications/$appName" ]]; then
- applist="/Applications/$appName"
- elif [[ -d "/Applications/Utilities/$appName" ]]; then
- applist="/Applications/Utilities/$appName"
- else
- applist=$(mdfind "kind:application $appName" -0 )
- fi
- printlog "App(s) found: ${applist}"
-
- appPathArray=( ${(0)applist} )
-
- if [[ ${#appPathArray} -gt 0 ]]; then
- filteredAppPaths=( ${(M)appPathArray:#${targetDir}*} )
- if [[ ${#filteredAppPaths} -eq 1 ]]; then
- installedAppPath=$filteredAppPaths[1]
- #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"
- else
- printlog "could not determine location of $appName"
- fi
- else
- printlog "could not find $appName"
- fi
-}
-
-checkRunningProcesses() {
- # don't check in DEBUG mode
- if [[ $DEBUG -ne 0 ]]; then
- printlog "DEBUG mode, not checking for blocking processes"
- return
- fi
-
- # try at most 3 times
- for i in {1..4}; do
- countedProcesses=0
- for x in ${blockingProcesses}; do
- if pgrep -xq "$x"; then
- printlog "found blocking process $x"
- appClosed=1
-
- case $BLOCKING_PROCESS_ACTION in
- quit|quit_kill)
- printlog "telling app $x to quit"
- runAsUser osascript -e "tell app \"$x\" to quit"
- if [[ $i > 2 && $BLOCKING_PROCESS_ACTION = "quit_kill" ]]; then
- printlog "Changing BLOCKING_PROCESS_ACTION to kill"
- BLOCKING_PROCESS_ACTION=kill
- else
- # give the user a bit of time to quit apps
- printlog "waiting 30 seconds for processes to quit"
- sleep 30
- fi
- ;;
- kill)
- printlog "killing process $x"
- pkill $x
- sleep 5
- ;;
- prompt_user|prompt_user_then_kill)
- button=$(displaydialog "Quit “$x” to continue updating? (Leave this dialogue if you want to activate this update later)." "The application “$x” needs to be updated.")
- if [[ $button = "Not Now" ]]; then
- cleanupAndExit 10 "user aborted update"
- else
- if [[ $i > 2 && $BLOCKING_PROCESS_ACTION = "prompt_user_then_kill" ]]; then
- printlog "Changing BLOCKING_PROCESS_ACTION to kill"
- BLOCKING_PROCESS_ACTION=kill
- else
- printlog "telling app $x to quit"
- runAsUser osascript -e "tell app \"$x\" to quit"
- # give the user a bit of time to quit apps
- printlog "waiting 30 seconds for processes to quit"
- sleep 30
- fi
- fi
- ;;
- prompt_user_loop)
- button=$(displaydialog "Quit “$x” to continue updating? (Click “Not Now” to be asked in 1 hour, or leave this open until you are ready)." "The application “$x” needs to be updated.")
- if [[ $button = "Not Now" ]]; then
- if [[ $i < 2 ]]; then
- printlog "user wants to wait an hour"
- sleep 3600 # 3600 seconds is an hour
- else
- printlog "change of BLOCKING_PROCESS_ACTION to tell_user"
- BLOCKING_PROCESS_ACTION=tell_user
- fi
- else
- printlog "telling app $x to quit"
- runAsUser osascript -e "tell app \"$x\" to quit"
- # give the user a bit of time to quit apps
- printlog "waiting 30 seconds for processes to quit"
- sleep 30
- fi
- ;;
- tell_user|tell_user_then_kill)
- button=$(displaydialogContinue "Quit “$x” to continue updating? (This is an important update). Wait for notification of update before launching app again." "The application “$x” needs to be updated.")
- printlog "telling app $x to quit"
- runAsUser osascript -e "tell app \"$x\" to quit"
- # give the user a bit of time to quit apps
- printlog "waiting 30 seconds for processes to quit"
- sleep 30
- if [[ $i > 1 && $BLOCKING_PROCESS_ACTION = tell_user_then_kill ]]; then
- printlog "Changing BLOCKING_PROCESS_ACTION to kill"
- BLOCKING_PROCESS_ACTION=kill
- fi
- ;;
- silent_fail)
- cleanupAndExit 12 "blocking process '$x' found, aborting"
- ;;
- esac
-
- countedProcesses=$((countedProcesses + 1))
- fi
- done
-
- done
-
- if [[ $countedProcesses -ne 0 ]]; then
- cleanupAndExit 11 "could not quit all processes, aborting..."
- fi
-
- printlog "no more blocking processes, continue with update"
-}
-
-reopenClosedProcess() {
- # If Installomator closed any processes, let's get the app opened again
- # credit: Søren Theilgaard (@theilgaard)
-
- # don't reopen if REOPEN is not "yes"
- if [[ $REOPEN != yes ]]; then
- printlog "REOPEN=no, not reopening anything"
- return
- fi
-
- # don't reopen in DEBUG mode
- if [[ $DEBUG -ne 0 ]]; then
- printlog "DEBUG mode, not reopening anything"
- return
- fi
-
- if [[ $appClosed == 1 ]]; then
- printlog "Telling app $appName to open"
- #runAsUser osascript -e "tell app \"$appName\" to open"
- #runAsUser open -a "${appName}"
- reloadAsUser "open -a \"${appName}\""
- #reloadAsUser "open \"${(0)applist}\""
- 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."
- fi
-}
-
-installAppWithPath() { # $1: path to app to install in $targetDir
- # modified by: Søren Theilgaard (@theilgaard)
- appPath=${1?:"no path to app"}
-
- # check if app exists
- if [ ! -e "$appPath" ]; then
- cleanupAndExit 8 "could not find: $appPath"
- fi
-
- # verify with spctl
- printlog "Verifying: $appPath"
- if ! teamID=$(spctl -a -vv "$appPath" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' ); then
- cleanupAndExit 4 "Error verifying $appPath"
- fi
-
- printlog "Team ID matching: $teamID (expected: $expectedTeamID )"
-
- if [ "$expectedTeamID" != "$teamID" ]; then
- cleanupAndExit 5 "Team IDs do not match"
- fi
-
- # versioncheck
- # credit: Søren Theilgaard (@theilgaard)
- appNewVersion=$(defaults read $appPath/Contents/Info.plist $versionKey)
- if [[ $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."
- if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
- printlog "notifying"
- displaynotification "$message" "No update for $name!"
- fi
- cleanupAndExit 0 "No new version to install"
- else
- printlog "Using force to install anyway."
- fi
- else
- 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"
- return 0
- fi
-
- # check for root
- if [ "$(whoami)" != "root" ]; then
- # not running as root
- cleanupAndExit 6 "not running as root, exiting"
- fi
-
- # remove existing application
- if [ -e "$targetDir/$appName" ]; then
- printlog "Removing existing $targetDir/$appName"
- rm -Rf "$targetDir/$appName"
- fi
-
- # copy app to /Applications
- printlog "Copy $appPath to $targetDir"
- if ! ditto "$appPath" "$targetDir/$appName"; then
- cleanupAndExit 7 "Error while copying"
- fi
-
-
- # set ownership to current user
- if [ "$currentUser" != "loginwindow" ]; then
- printlog "Changing owner to $currentUser"
- chown -R "$currentUser" "$targetDir/$appName"
- else
- printlog "No user logged in, not changing user"
- fi
-
-}
-
-mountDMG() {
- # mount the dmg
- printlog "Mounting $tmpDir/$archiveName"
- # always pipe 'Y\n' in case the dmg requires an agreement
- if ! dmgmount=$(echo 'Y'$'\n' | hdiutil attach "$tmpDir/$archiveName" -nobrowse -readonly | tail -n 1 | cut -c 54- ); then
- cleanupAndExit 3 "Error mounting $tmpDir/$archiveName"
- fi
-
- if [[ ! -e $dmgmount ]]; then
- printlog "Error mounting $tmpDir/$archiveName"
- cleanupAndExit 3
- fi
-
- printlog "Mounted: $dmgmount"
-}
-
-installFromDMG() {
- mountDMG
-
- installAppWithPath "$dmgmount/$appName"
-}
-
-installFromPKG() {
- # verify with spctl
- printlog "Verifying: $archiveName"
-
- if ! spctlout=$(spctl -a -vv -t install "$archiveName" 2>&1 ); then
- printlog "Error verifying $archiveName"
- cleanupAndExit 4
- fi
-
- teamID=$(echo $spctlout | awk -F '(' '/origin=/ {print $2 }' | tr -d '()' )
-
- # Apple signed software has no teamID, grab entire origin instead
- if [[ -z $teamID ]]; then
- teamID=$(echo $spctlout | awk -F '=' '/origin=/ {print $NF }')
- fi
-
-
- printlog "Team ID: $teamID (expected: $expectedTeamID )"
-
- if [ "$expectedTeamID" != "$teamID" ]; then
- printlog "Team IDs do not match!"
- cleanupAndExit 5
- fi
-
- # Check version of pkg to be installed if packageID is set
- if [[ $packageID != "" && $appversion != "" ]]; then
- printlog "Checking package version."
- pkgutil --expand "$archiveName" "$archiveName"_pkg
- #printlog "$(cat "$archiveName"_pkg/Distribution | xpath '//installer-gui-script/pkg-ref[@id][@version]' 2>/dev/null)"
- appNewVersion=$(cat "$archiveName"_pkg/Distribution | xpath '//installer-gui-script/pkg-ref[@id][@version]' 2>/dev/null | grep -i "$packageID" | tr ' ' '\n' | grep -i version | cut -d \" -f 2) #sed -E 's/.*\"([0-9.]*)\".*/\1/g'
- rm -r "$archiveName"_pkg
- printlog "Downloaded package $packageID version $appNewVersion"
- if [[ $appversion == $appNewVersion ]]; then
- printlog "Downloaded version of $name is the same as installed."
- if [[ $INSTALL != "force" ]]; then
- message="$name, version $appNewVersion, is the latest version."
- if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
- printlog "notifying"
- displaynotification "$message" "No update for $name!"
- fi
- cleanupAndExit 0 "No new version to install"
- else
- printlog "Using force to install anyway."
- fi
- fi
- fi
-
- # skip install for DEBUG
- if [ "$DEBUG" -ne 0 ]; 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"
- fi
-
- # install pkg
- printlog "Installing $archiveName to $targetDir"
- if ! installer -pkg "$archiveName" -tgt "$targetDir" ; then
- printlog "error installing $archiveName"
- cleanupAndExit 9
- fi
-}
-
-installFromZIP() {
- # unzip the archive
- printlog "Unzipping $archiveName"
-
- # tar -xf "$archiveName"
-
- # note: when you expand a zip using tar in Mojave the expanded
- # app will never pass the spctl check
-
- # unzip -o -qq "$archiveName"
-
- # note: githubdesktop fails spctl verification when expanded
- # with unzip
-
- ditto -x -k "$archiveName" "$tmpDir"
- installAppWithPath "$tmpDir/$appName"
-}
-
-installFromTBZ() {
- # unzip the archive
- printlog "Unzipping $archiveName"
- tar -xf "$archiveName"
- installAppWithPath "$tmpDir/$appName"
-}
-
-installPkgInDmg() {
- mountDMG
- # locate pkg in dmg
- if [[ -z $pkgName ]]; then
- # find first file ending with 'pkg'
- findfiles=$(find "$dmgmount" -iname "*.pkg" -maxdepth 1 )
- filearray=( ${(f)findfiles} )
- if [[ ${#filearray} -eq 0 ]]; then
- cleanupAndExit 20 "couldn't find pkg in dmg $archiveName"
- fi
- archiveName="${filearray[1]}"
- printlog "found pkg: $archiveName"
- else
- # it is now safe to overwrite archiveName for installFromPKG
- archiveName="$dmgmount/$pkgName"
- fi
-
- # installFromPkgs
- installFromPKG
-}
-
-installPkgInZip() {
- # unzip the archive
- printlog "Unzipping $archiveName"
- tar -xf "$archiveName"
-
- # locate pkg in zip
- if [[ -z $pkgName ]]; then
- # find first file ending with 'pkg'
- findfiles=$(find "$tmpDir" -iname "*.pkg" -maxdepth 2 )
- filearray=( ${(f)findfiles} )
- if [[ ${#filearray} -eq 0 ]]; then
- cleanupAndExit 20 "couldn't find pkg in zip $archiveName"
- fi
- archiveName="${filearray[1]}"
- # it is now safe to overwrite archiveName for installFromPKG
- printlog "found pkg: $archiveName"
- else
- # it is now safe to overwrite archiveName for installFromPKG
- archiveName="$tmpDir/$pkgName"
- fi
-
- # installFromPkgs
- installFromPKG
-}
-
-installAppInDmgInZip() {
- # unzip the archive
- printlog "Unzipping $archiveName"
- tar -xf "$archiveName"
-
- # locate dmg in zip
- if [[ -z $pkgName ]]; then
- # find first file ending with 'dmg'
- findfiles=$(find "$tmpDir" -iname "*.dmg" -maxdepth 2 )
- filearray=( ${(f)findfiles} )
- if [[ ${#filearray} -eq 0 ]]; then
- cleanupAndExit 20 "couldn't find dmg in zip $archiveName"
- fi
- archiveName="$(basename ${filearray[1]})"
- # it is now safe to overwrite archiveName for installFromDMG
- printlog "found dmg: $tmpDir/$archiveName"
- else
- # it is now safe to overwrite archiveName for installFromDMG
- archiveName="$pkgName"
- fi
-
- # installFromDMG, DMG expected to include an app (will not work with pkg)
- installFromDMG
-}
-
-runUpdateTool() {
- printlog "Function called: runUpdateTool"
- if [[ -x $updateTool ]]; then
- printlog "running $updateTool $updateToolArguments"
- if [[ -n $updateToolRunAsCurrentUser ]]; then
- runAsUser $updateTool ${updateToolArguments}
- else
- $updateTool ${updateToolArguments}
- fi
- if [[ $? -ne 0 ]]; then
- cleanupAndExit 15 "Error running $updateTool"
- fi
- else
- printlog "couldn't find $updateTool, continuing normally"
- return 1
- fi
- return 0
-}
-
-finishing() {
- printlog "Finishing…"
- sleep 10 # wait a moment to let spotlight catch up
- getAppVersion
-
- if [[ -z $appversion ]]; then
- message="Installed $name"
- else
- message="Installed $name, version $appversion"
- fi
-
- printlog "$message"
-
- if [[ $currentUser != "loginwindow" && ( $NOTIFY == "success" || $NOTIFY == "all" ) ]]; then
- printlog "notifying"
- displaynotification "$message" "$name update/installation complete!"
- fi
-}
-
-
-# MARK: check minimal macOS requirement
-autoload is-at-least
-
-if ! is-at-least 10.14 $(sw_vers -productVersion); then
- printlog "Installomator requires at least macOS 10.14 Mojave."
- exit 98
-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"
- 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"
- 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"
- eval $1
- else
- # assume it's a label
- label=$1
- fi
- # shift to next argument
- shift 1
-done
-
-# lowercase the label
-label=${label:l}
-
-printlog "################## Start Installomator v. $VERSION"
-printlog "################## $label"
-
-# How we get version number from app
-# (alternative is "CFBundleVersion", that can be used in labels)
-versionKey="CFBundleShortVersionString"
-
-# get current user
-currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }')
-
-
-# MARK: labels in case statement
-case $label in
-version)
- # print the script VERSION
- printlog "$VERSION"
- exit 0
- ;;
-longversion)
- # print the script version
- printlog "Installomater: version $VERSION ($VERSIONDATE)"
- exit 0
- ;;
-
-# label descriptions start here
-1password7)
- name="1Password 7"
- type="pkg"
- downloadURL="https://app-updates.agilebits.com/download/OPM7"
- appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[0-9a-zA-Z]*-([0-9.]*)\..*/\1/g' )
- expectedTeamID="2BUA8C4S2C"
- blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" )
- #forcefulQuit=YES
- ;;
-4kvideodownloader)
- name="4K Video Downloader"
- type="dmg"
- downloadURL="$(curl -fsL "https://www.4kdownload.com/products/product-videodownloader" | grep -E -o "https:\/\/dl\.4kdownload\.com\/app\/4kvideodownloader_.*?.dmg\?source=website" | head -1)"
- appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[0-9a-zA-Z]*_([0-9.]*)\.dmg.*/\1/g')
- versionKey="CFBundleVersion"
- expectedTeamID="GHQ37VJF83"
- ;;
-8x8)
- # credit: #D-A-James from MacAdmins Slack and Isaac Ordonez, Mann consulting (@mannconsulting)
- name="8x8 Work"
- type="dmg"
- downloadURL=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}')
- # As for appNewVersion, it needs to be checked for newer version than 7.2.4
- appNewVersion=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*-v([0-9\.]*)[-\.]*.*/\1/' )
- expectedTeamID="FC967L3QRG"
- ;;
-abstract)
- name="Abstract"
- type="zip"
- downloadURL="https://api.goabstract.com/releases/latest/download"
- appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
- expectedTeamID="77MZLZE47D"
- ;;
-adobebrackets)
- name="Brackets"
- type="dmg"
- downloadURL=$(downloadURLFromGit adobe brackets )
- appNewVersion=$(versionFromGit adobe brackets )
- expectedTeamID="JQ525L2MZD"
- ;;
-adobeconnect)
- # credit: Oh4sh0 https://github.com/Oh4sh0
- # Comment by Søren: I do not know this software.
- # Looks like it's an Adobe installer in an app, so it will probably not work
- name="AdobeConnectInstaller"
- type="dmg"
- downloadURL="http://www.adobe.com/go/ConnectSetupMac"
- appNewVersion=$(curl -fs https://helpx.adobe.com/adobe-connect/connect-downloads-updates.html | grep "Mac" | grep version | head -1 | sed -E 's/.*\(version ([0-9\.]*),.*/\1/g')
- expectedTeamID="JQ525L2MZD"
- ;;
-adobereaderdc|\
-adobereaderdc-install)
- name="Adobe Acrobat Reader DC"
- type="pkgInDmg"
- packageID="com.adobe.acrobat.DC.reader.app.pkg.MUI"
- downloadURL=$(curl --silent --fail -H "Sec-Fetch-Site: same-origin" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US;q=0.9,en;q=0.8" -H "DNT: 1" -H "Sec-Fetch-Mode: cors" -H "X-Requested-With: XMLHttpRequest" -H "Referer: https://get.adobe.com/reader/enterprise/" -H "Accept: */*" "https://get.adobe.com/reader/webservices/json/standalone/?platform_type=Macintosh&platform_dist=OSX&platform_arch=x86-32&language=English&eventname=readerotherversions" | grep -Eo '"download_url":.*?[^\\]",' | head -n 1 | cut -d \" -f 4)
- appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt)
- #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard)
- expectedTeamID="JQ525L2MZD"
- blockingProcesses=( "AdobeReader" )
- ;;
-adobereaderdc-update)
- name="Adobe Acrobat Reader DC"
- type="pkgInDmg"
- downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo http://ardownload.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDCUpd"$adobecurrent"_MUI.dmg)
- appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt)
- #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard)
- expectedTeamID="JQ525L2MZD"
- blockingProcesses=( "AdobeReader" )
- ;;
-aircall)
- # credit: @kris-anderson
- name="Aircall"
- type="dmg"
- downloadURL="https://electron.aircall.io/download/osx"
- expectedTeamID="3ML357Q795"
- ;;
-airserver)
- # credit: AP Orlebeke (@apizz)
- name="AirServer"
- type="dmg"
- downloadURL="https://www.airserver.com/download/mac/latest"
- #appNewVersion=$() # Cannot find version history or release notes on home page
- expectedTeamID="6C755KS5W3"
- ;;
-aldente)
- name="AlDente"
- type="dmg"
- downloadURL=$(downloadURLFromGit davidwernhart AlDente)
- appNewVersion=$(versionFromGit davidwernhart AlDente)
- expectedTeamID="3WVC84GB99"
- ;;
-alfred)
- # credit: AP Orlebeke (@apizz)
- name="Alfred"
- type="dmg"
- downloadURL=$(curl -fs https://www.alfredapp.com | awk -F '"' "/dmg/ {print \$2}" | head -1)
- appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*Alfred_([0-9.]*)_.*/\1/')
- appName="Alfred 4.app"
- expectedTeamID="XZZXE9SED4"
- ;;
-alttab)
- # credit: Gabe Marchan (gabemarchan.com - @darklink87)
- name="AltTab"
- type="zip"
- downloadURL=$(downloadURLFromGit lwouis alt-tab-macos)
- expectedTeamID="QXD7GW8FHY"
- ;;
-amazonchime)
- # credit: @dvsjr macadmins slack
- name="Amazon Chime"
- type="dmg"
- downloadURL="https://clients.chime.aws/mac/latest"
- appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z.\-]*-([0-9.]*)\..*/\1/g' )
- expectedTeamID="94KV3E626L"
- ;;
-amazonworkspaces)
- # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
- name="Workspaces"
- type="pkg"
- downloadURL="https://d2td7dqidlhjx7.cloudfront.net/prod/global/osx/WorkSpaces.pkg"
- appNewVersion=$(curl -fs https://d2td7dqidlhjx7.cloudfront.net/prod/iad/osx/WorkSpacesAppCast_macOS_20171023.xml | grep -o "Version*.*<" | head -1 | cut -d " " -f2 | cut -d "<" -f1)
- expectedTeamID="94KV3E626L"
- ;;
-androidfiletransfer)
- #credit: Sam Ess (saess-sep)
- name="Android File Transfer"
- type="dmg"
- downloadURL="https://dl.google.com/dl/androidjumper/mtp/current/AndroidFileTransfer.dmg"
- expectedTeamID="EQHXZ8M8AV"
- ;;
-anydesk)
- name="AnyDesk"
- type="dmg"
- downloadURL="https://download.anydesk.com/anydesk.dmg"
- appNewVersion="$(curl -fs https://anydesk.com/da/downloads/mac-os | grep -i "d-block" | grep -E -o ">v[0-9.]* .*MB" | sed -E 's/.*v([0-9.]*) .*/\1/g')"
- expectedTeamID="KU6W3B6JMZ"
- ;;
-apparency)
- name="Apparency"
- type="dmg"
- downloadURL="https://www.mothersruin.com/software/downloads/Apparency.dmg"
- expectedTeamID="936EB786NH"
- ;;
-appcleaner)
- # credit: Tadayuki Onishi (@kenchan0130)
- name="AppCleaner"
- type="zip"
- downloadURL=$(curl -fs https://freemacsoft.net/appcleaner/Updates.xml | xpath '//rss/channel/*/enclosure/@url' 2>/dev/null | tr " " "\n" | sort | tail -1 | cut -d '"' -f 2)
- expectedTeamID="X85ZX835W9"
- ;;
-applenyfonts)
- name="Apple New York Font Collection"
- type="pkgInDmg"
- downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY-Font.dmg"
- packageID="com.apple.pkg.NYFonts"
- expectedTeamID="Development Update"
- ;;
-applesfpro)
- name="San Francisco Pro"
- type="pkgInDmg"
- downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Pro.dmg"
- packageID="com.apple.pkg.SanFranciscoPro"
- expectedTeamID="Development Update"
- ;;
-applesfmono)
- name="San Francisco Mono"
- type="pkgInDmg"
- downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"
- packageID="com.apple.pkg.SFMonoFonts"
- expectedTeamID="Software Update"
- ;;
-applesfcompact)
- name="San Francisco Compact"
- type="pkgInDmg"
- downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Compact.dmg"
- packageID="com.apple.pkg.SanFranciscoCompact"
- expectedTeamID="Development Update"
- ;;
-aquaskk)
- # credit: Tadayuki Onishi (@kenchan0130)
- name="aquaskk"
- type="pkg"
- downloadURL=$(downloadURLFromGit codefirst aquaskk)
- appNewVersion=$(versionFromGit codefirst aquaskk)
- expectedTeamID="FPZK4WRGW7"
- ;;
-arq7)
- name="Arq7"
- type="pkg"
- packageID="com.haystacksoftware.Arq"
- downloadURL="https://arqbackup.com/download/arqbackup/Arq7.pkg"
- appNewVersion="$(curl -fs "https://arqbackup.com" | grep -io "version .*[0-9.]*.* for macOS" | cut -d ">" -f2 | cut -d "<" -f1)"
- expectedTeamID="48ZCSDVL96"
- ;;
-atext)
- # credit: Gabe Marchan (gabemarchan.com - @darklink87)
- name="aText"
- type="dmg"
- downloadURL="https://trankynam.com/atext/downloads/aText.dmg"
- expectedTeamID="KHEMQ2FD9E"
- ;;
-atom)
- name="Atom"
- type="zip"
- archiveName="atom-mac.zip"
- downloadURL=$(downloadURLFromGit atom atom )
- appNewVersion=$(versionFromGit atom atom)
- expectedTeamID="VEKTX9H2N7"
- ;;
-audacity)
- # credit: Gabe Marchan (gabemarchan.com - @darklink87)
- name="Audacity"
- type="dmg"
- downloadURL=$(downloadURLFromGit audacity audacity)
- appNewVersion=$(versionFromGit audacity audacity)
- expectedTeamID="T3N4JQ7YY6"
- ;;
-autodmg)
- # credit: Mischa van der Bent (@mischavdbent)
- name="AutoDMG"
- type="dmg"
- downloadURL=$(downloadURLFromGit MagerValp AutoDMG)
- appNewVersion=$(versionFromGit MagerValp AutoDMG)
- expectedTeamID="5KQ3D3FG5H"
- ;;
-autopkgr)
- # credit: Søren Theilgaard (@theilgaard)
- name="AutoPkgr"
- type="dmg"
- #downloadURL=$(curl -fs "https://api.github.com/repos/lindegroup/autopkgr/releases/latest" | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ && ! /sha256/ { print \$4 }")
- downloadURL=$(downloadURLFromGit lindegroup autopkgr)
- appNewVersion=$(versionFromGit lindegroup autopkgr)
- expectedTeamID="JVY2ZR6SEF"
- ;;
-aviatrix)
- # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
- name="Aviatrix VPN Client"
- type="pkg"
- downloadURL="https://s3-us-west-2.amazonaws.com/aviatrix-download/AviatrixVPNClient/AVPNC_mac.pkg"
- expectedTeamID="32953Z7NBN"
- ;;
-awscli2)
- # credit: Bilal Habib (@Pro4TLZZ)
- name="AWSCLI"
- type="pkg"
- packageID="com.amazon.aws.cli2"
- downloadURL="https://awscli.amazonaws.com/AWSCLIV2.pkg"
- appNewVersion=$( curl -fs "https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst" | grep -i "CHANGELOG" -a4 | grep "[0-9.]" )
- expectedTeamID="94KV3E626L"
- ;;
-awsvpnclient)
- name="AWS VPN Client"
- type="pkg"
- downloadURL="https://d20adtppz83p9s.cloudfront.net/OSX/latest/AWS_VPN_Client.pkg"
- expectedTeamID="94KV3E626L"
- appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4)
- ;;
-balenaetcher)
- name="balenaEtcher"
- type="dmg"
- downloadURL=$(downloadURLFromGit balena-io etcher )
- appNewVersion=$(versionFromGit balena-io etcher )
- expectedTeamID="66H43P8FRG"
- ;;
-balsamiqwireframes)
- # credit: Gabe Marchan (gabemarchan.com - @darklink87)
- name="Balsamiq Wireframes"
- type="dmg"
- downloadURL=https://builds.balsamiq.com/bwd/$(curl -fs "https://builds.balsamiq.com" | awk -F "
Version" | head -1 | cut -d " " -f1 | cut -d ";" -f2 | cut -d "." -f 1-3) - expectedTeamID="S272Y5R93J" - ;; -clevershare2) - # credit: Søren Theilgaard (@theilgaard) - name="Clevershare" - type="dmg" - downloadURL=$(curl -fs https://archive.clevertouch.com/clevershare2g | grep -i "_Mac" | tr '"' "\n" | grep "^http.*dmg") - appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' ) - expectedTeamID="P76M9BE8DQ" - ;; -clickshare) - # credit: Søren Theilgaard (@theilgaard) - name="ClickShare" - type="appInDmgInZip" - downloadURL=https://www.barco.com$(curl -fs "https://www.barco.com/en/clickshare/app" | grep -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1) - expectedTeamID="P6CDJZR997" - ;; -code42) - # credit: Isaac Ordonez, Mann consulting (@mannconsulting) - name="Code42" - type="pkgInDmg" - downloadURL=https://download.code42.com/installs/agent/latest-mac.dmg - expectedTeamID="9YV9435DHD" - blockingProcesses=( NONE ) - ;; -coderunner) - # credit: Erik Stam (@erikstam) - name="CodeRunner" - type="zip" - downloadURL="https://coderunnerapp.com/download" - expectedTeamID="R4GD98AJF9" - ;; -cormorant) - # credit: Søren Theilgaard (@theilgaard) - name="Cormorant" - type="zip" - downloadURL=$(curl -fs https://eclecticlight.co/downloads/ | grep -i $name | grep zip | sed -E 's/.*href=\"(https.*)\">.*/\1/g') - appNewVersion=$(curl -fs https://eclecticlight.co/downloads/ | grep zip | grep -o -E "$name [0-9.]*" | awk '{print $2}') - expectedTeamID="QWY4LRW926" - ;; -cryptomator) - name="Cryptomator" - type="dmg" - downloadURL=$(downloadURLFromGit cryptomator cryptomator) - appNewVersion=$(versionFromGit cryptomator cryptomator) - expectedTeamID="YZQJQUHA3L" - ;; -cyberduck) - name="Cyberduck" - type="zip" - downloadURL=$(curl -fs https://version.cyberduck.io/changelog.rss | xpath '//rss/channel/item/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 ) - appNewVersion=$(curl -fs https://version.cyberduck.io/changelog.rss | xpath '//rss/channel/item/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2 ) - expectedTeamID="G69SCX94XU" - ;; -dangerzone) - # credit: Micah Lee (@micahflee) - name="Dangerzone" - type="dmg" - downloadURL=$(curl -s https://dangerzone.rocks/ | grep https://github.com/firstlookmedia/dangerzone/releases/download | grep \.dmg | cut -d'"' -f2) - expectedTeamID="P24U45L8P5" - ;; -darktable) - # credit: Søren Theilgaard (@theilgaard) - name="darktable" - type="dmg" - downloadURL=$(downloadURLFromGit darktable-org darktable) - appNewVersion=$(versionFromGit darktable-org darktable) - expectedTeamID="85Q3K4KQRY" - ;; -dbeaverce) - name="DBeaver" - type="dmg" - downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos.dmg" - expectedTeamID="42B6MDKMW8" - blockingProcesses=( dbeaver ) - ;; -debookee) - name="Debookee" - type="zip" - downloadURL=$(curl --location --fail --silent "https://www.iwaxx.com/debookee/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2) - expectedTeamID="AATLWWB4MZ" - ;; -defaultfolderx) - # credit: Gabe Marchan (gabemarchan.com - @darklink87) - name="Default Folder X" - type="dmg" - downloadURL=$(curl -fs "https://www.stclairsoft.com/cgi-bin/dl.cgi?DX" | awk -F '"' "/dmg/ {print \$4}" | head -2 | tail -1) - expectedTeamID="7HK42V8R9D" - ;; -depnotify) - name="DEPNotify" - type="zip" - downloadURL="https://files.nomad.menu/DEPNotify.zip" - expectedTeamID="VRPY9KHGX6" - targetDir="/Applications/Utilities" - ;; -desktoppr) - name="desktoppr" - type="pkg" - packageID="com.scriptingosx.desktoppr" - downloadURL=$(downloadURLFromGit "scriptingosx" "desktoppr") - appNewVersion=$(versionFromGit "scriptingosx" "desktoppr") - expectedTeamID="JME5BW3F3R" - blockingProcesses=( NONE ) - ;; -detectxswift) - # credit: AP Orlebeke (@apizz) - name="DetectX Swift" - type="zip" - downloadURL="https://s3.amazonaws.com/sqwarq.com/PublicZips/DetectX_Swift.app.zip" - appNewVersion=$(curl -fs https://s3.amazonaws.com/sqwarq.com/AppCasts/dtxswift_release_notes.html | grep Version | head -1 | sed -E 's/.*Version ([0-9.]*)\<.*/\1/') - expectedTeamID="MAJ5XBJSG3" - ;; -devonthink) - # It's a zipped dmg file, needs function installAppInDmgInZip - # credit: Søren Theilgaard (@theilgaard) - name="DEVONthink 3" - type="appInDmgInZip" - downloadURL=$( curl -fs https://www.devontechnologies.com/apps/devonthink | grep -i "download.devon" | tr '"' '\n' | tr "'" '\n' | grep -e '^https://' ) - appNewVersion=$( echo ${downloadURL} | tr '/' '\n' | grep "[0-9]" | grep "[.]" | head -1 ) - expectedTeamID="679S2QUWR8" - ;; -dialpad) - # credit: @ehosaka - name="Dialpad" - type="dmg" - downloadURL="https://storage.googleapis.com/dialpad_native/osx/Dialpad.dmg" - expectedTeamID="9V29MQSZ9M" - ;; -discord) - name="Discord" - type="dmg" - downloadURL="https://discordapp.com/api/download?platform=osx" - expectedTeamID="53Q6R32WPB" - ;; -docker) - # credit: @securitygeneration - name="Docker" - type="dmg" - #downloadURL="https://download.docker.com/mac/stable/Docker.dmg" - if [[ $(arch) == arm64 ]]; then - downloadURL="https://desktop.docker.com/mac/stable/arm64/Docker.dmg" - elif [[ $(arch) == i386 ]]; then - downloadURL="https://desktop.docker.com/mac/stable/amd64/Docker.dmg" - fi - appNewVersion=$(curl -ifs https://docs.docker.com/docker-for-mac/release-notes/ | grep ">Docker Desktop Community" | head -1 | sed -n -e 's/^.*Community //p' | cut -d '<' -f1) - expectedTeamID="9BNSXJN65R" - ;; -drift) - # credit Elena Ackley (@elenaelago) - name="Drift" - type="dmg" - downloadURL="https://drift-prod-desktop-installers.s3.amazonaws.com/mac/Drift-latest.dmg" - expectedTeamID="78559WUUR9" - ;; -dropbox) - name="Dropbox" - type="dmg" - downloadURL="https://www.dropbox.com/download?plat=mac&full=1" - expectedTeamID="G7HH3F8CAK" - ;; -easeusdatarecoverywizard) - # credit: Søren Theilgaard (@theilgaard) - name="EaseUS Data Recovery Wizard" - type="dmg" - downloadURL=$( curl -fsIL https://down.easeus.com/product/mac_drw_free_setup | grep -i "^location" | awk '{print $2}' | tr -d '\r\n' ) - #appNewVersion="" - expectedTeamID="DLLVW95FSM" - ;; -egnyte) - # credit: #MoeMunyoki from MacAdmins Slack - name="Egnyte Connect" - type="pkg" - downloadURL="https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/latest/EgnyteConnectMac.pkg" - expectedTeamID="FELUD555VC" - blockingProcesses=( NONE ) - ;; -element) - name="Element" - type="dmg" - downloadURL="https://packages.riot.im/desktop/install/macos/Element.dmg" - appNewVersion=$(versionFromGit vector-im element-desktop) - expectedTeamID="7J4U792NQT" - ;; -eraseinstall) - name="EraseInstall" - type="pkg" - downloadURL=https://bitbucket.org$(curl -fs https://bitbucket.org/prowarehouse-nl/erase-install/downloads/ | grep pkg | cut -d'"' -f2 | head -n 1) - expectedTeamID="R55HK5K86Y" - ;; -etrecheck) - # credit: @dvsjr macadmins slack - name="EtreCheckPro" - type="zip" - downloadURL="https://cdn.etrecheck.com/EtreCheckPro.zip" - expectedTeamID="U87NE528LC" - ;; -evernote) - name="Evernote" - type="dmg" - downloadURL=$(curl -fs -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" "https://evernote.com/download" | grep -i ".dmg" | cut -d '"' -f2) - appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' ) - expectedTeamID="Q79WDW8YH9" - appName="Evernote.app" - ;; -exelbanstats) - # credit: Søren Theilgaard (@theilgaard) - name="Stats" - type="dmg" - downloadURL=$(downloadURLFromGit exelban stats) - appNewVersion=$(versionFromGit exelban stats) - expectedTeamID="RP2S87B72W" - ;; -fantastical) - # credit: Drew Diver (@grumpydrew on MacAdmins Slack) - name="Fantastical" - type="zip" - downloadURL="https://flexibits.com/fantastical/download" - appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' ) - expectedTeamID="85C27NK92C" - ;; -favro) - name="Favro" - type="dmg" - downloadURL="https://download.favro.com/FavroDesktop/macOS/x64/$(curl -fs https://download.favro.com/FavroDesktop/macOS/x64/Latest.html | cut -d ">" -f1 | cut -d "=" -f 4 | cut -d '"' -f1)" - appNewVersion="$(curl -fs https://download.favro.com/FavroDesktop/macOS/x64/Latest.html | cut -d ">" -f1 | cut -d "=" -f 4 | cut -d '"' -f1 | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')" - expectedTeamID="PUA8Q354ZF" - ;; -ferdi) - name="Ferdi" - type="dmg" - downloadURL=$(downloadURLFromGit getferdi ferdi ) - appNewVersion=$(versionFromGit getferdi ferdi ) - expectedTeamID="B6J9X9DWFL" - ;; -figma) - name="Figma" - type="zip" - downloadURL="https://desktop.figma.com/mac/Figma.zip" - expectedTeamID="T8RA8NE3B7" - ;; -firefox) - name="Firefox" - type="dmg" - downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US" - appNewVersion=$(/usr/bin/curl https://www.mozilla.org/en-US/firefox/releases/ --silent | /usr/bin/grep '/dev/null | cut -d '"' -f 2) - expectedTeamID="V85GBYB7B9" - ;; -gimp) - name="GIMP-2.10" - type="dmg" - downloadURL=https://$(curl -fs https://www.gimp.org/downloads/ | grep -m 1 -o "download.*gimp-.*.dmg") - appNewVersion=$(echo $downloadURL | cut -d "-" -f 2) - expectedTeamID="T25BQ8HSJF" - ;; -githubdesktop) - name="GitHub Desktop" - type="zip" - if [[ $(arch) == "arm64" ]]; then - downloadURL="https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64" - elif [[ $(arch) == "i386" ]]; then - downloadURL="https://central.github.com/deployments/desktop/desktop/latest/darwin" - fi - appNewVersion=$(curl -fsL https://central.github.com/deployments/desktop/desktop/changelog.json | awk -F '{' '/"version"/ { print $2 }' | sed -E 's/.*,\"version\":\"([0-9.]*)\".*/\1/g') - expectedTeamID="VEKTX9H2N7" - ;; -golang) - # credit: Søren Theilgaard (@theilgaard) - name="GoLang" - type="pkg" - packageID="org.golang.go" - downloadURL="$(curl -fsIL "https://golang.org$(curl -fs "https://golang.org/dl/" | grep -i "downloadBox" | grep "pkg" | tr '"' '\n' | grep "pkg")" | grep -i "^location" | awk '{print $2}' | tr -d '\r\n')" - appNewVersion="$( echo "${downloadURL}" | sed -E 's/.*\/(go[0-9.]*)\..*/\1/g' )" # Version includes letters "go" - expectedTeamID="EQHXZ8M8AV" - blockingProcesses=( NONE ) - ;; -googlechrome) - name="Google Chrome" - type="dmg" - if [[ $(arch) != "i386" ]]; then - printlog "Architecture: arm64 (not i386)" - downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg" - appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') # Credit: William Smith (@meck) - else - printlog "Architecture: i386" - downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg" - appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}') # Credit: William Smith (@meck) - fi - expectedTeamID="EQHXZ8M8AV" - ;; -googlechromepkg) - name="Google Chrome" - type="pkg" - # - # Note: this url acknowledges that you accept the terms of service - # https://support.google.com/chrome/a/answer/9915669 - # - downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg" - expectedTeamID="EQHXZ8M8AV" - updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent" - updateToolArguments=( -runMode oneshot -userInitiated YES ) - updateToolRunAsCurrentUser=1 - ;; -googleearth) - name="Google Earth Pro" - type="pkgInDmg" - downloadURL="https://dl.google.com/earth/client/advanced/current/GoogleEarthProMac-Intel.dmg" - expectedTeamID="EQHXZ8M8AV" - ;; -googledrive|\ -googledrivefilestream) - # credit: Isaac Ordonez, Mann consulting (@mannconsulting) - name="Google Drive File Stream" - type="pkgInDmg" - packageID="com.google.drivefs" - downloadURL="https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg" # downloadURL="https://dl.google.com/drive-file-stream/GoogleDrive.dmg" - blockingProcesses=( "Google Docs" "Google Drive" "Google Sheets" "Google Slides" ) - expectedTeamID="EQHXZ8M8AV" - ;; -googledrivebackupandsync) - name="Backup and Sync" - type="dmg" - downloadURL="https://dl.google.com/drive/InstallBackupAndSync.dmg" - expectedTeamID="EQHXZ8M8AV" - ;; -googlejapaneseinput) - # credit: Tadayuki Onishi (@kenchan0130) - name="GoogleJapaneseInput" - type="pkgInDmg" - pkgName="GoogleJapaneseInput.pkg" - downloadURL="https://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg" - blockingProcesses=( NONE ) - expectedTeamID="EQHXZ8M8AV" - ;; -googlesoftwareupdate) - name="Install Google Software Update" - type="pkgInDmg" - pkgName="Install Google Software Update.app/Contents/Resources/GSUInstall.pkg" - downloadURL="https://dl.google.com/mac/install/googlesoftwareupdate.dmg" - blockingProcesses=( NONE ) - expectedTeamID="EQHXZ8M8AV" - ;; -gotomeeting) - # credit: @matins - name="GoToMeeting" - type="dmg" - downloadURL="https://link.gotomeeting.com/latest-dmg" - expectedTeamID="GFNFVT632V" - ;; -gpgsuite) - # credit: Micah Lee (@micahflee) - name="GPG Suite" - type="pkgInDmg" - pkgName="Install.pkg" - downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4) - expectedTeamID="PKV8ZPD836" - ;; -gpgsync) - # credit: Micah Lee (@micahflee) - name="GPG Sync" - type="pkg" - downloadURL="https://github.com$(curl -s -L https://github.com/firstlookmedia/gpgsync/releases/latest | grep /firstlookmedia/gpgsync/releases/download | grep \.pkg | cut -d'"' -f2)" - expectedTeamID="P24U45L8P5" - ;; -grandperspective) - name="GrandPerspective" - type="dmg" - downloadURL="https://sourceforge.net/projects/grandperspectiv/files/latest/download" - expectedTeamID="3Z75QZGN66" - ;; -grasshopper) - # credit: Gabe Marchan (gabemarchan.com - @darklink87) - name="Grasshopper" - type="dmg" - downloadURL="https://dl.grasshopper.com/Grasshopper.dmg" - pkgName="Grasshopper.dmg" - expectedTeamID="KD6L2PTK2Q" - ;; -gyazo) - # credit: @matins - name="Gyazo" - type="dmg" - appNewVersion=$(curl -is "https://formulae.brew.sh/cask/gyazo" | grep 'Current version:' | grep -o "Gyazo.*dmg" | cut -d "-" -f 2 | awk -F ".dmg" '{print $1}') - downloadURL="https://files.gyazo.com/setup/Gyazo-${appNewVersion}.dmg" - expectedTeamID="9647Y3B7A4" - ;; -gyazogif) - # credit: @matins - # This is identical to gyazo, but the download contains two apps on the DMG - name="Gyazo GIF" - type="dmg" - appNewVersion=$(curl -is "https://formulae.brew.sh/cask/gyazo" | grep 'Current version:' | grep -o "Gyazo.*dmg" | cut -d "-" -f 2 | awk -F ".dmg" '{print $1}') - downloadURL="https://files.gyazo.com/setup/Gyazo-${appNewVersion}.dmg" - expectedTeamID="9647Y3B7A4" - ;; -hancock) - # Credit: Bilal Habib @Pro4TLZZZ - name="Hancock" - type="dmg" - downloadURL=$(downloadURLFromGit JeremyAgost Hancock ) - appNewVersion=$(versionFromGit JeremyAgost Hancock ) - expectedTeamID="SWD2B88S58" - ;; -handbrake) - name="HandBrake" - type="dmg" - downloadURL=$(curl --silent --fail "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" \ - | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ { print \$4 }") - appNewVersion=$(curl -sf "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" | awk -F '"' "/tag_name/ { print \$4 }") - expectedTeamID="5X9DE89KYV" - ;; -hazel) - # credit: Søren Theilgaard (@theilgaard) - name="Hazel" - type="dmg" - downloadURL=$(curl -fsI https://www.noodlesoft.com/Products/Hazel/download | grep -i "^location" | awk '{print $2}' | tr -d '\r\n') - appNewVersion=$(curl -fsI https://www.noodlesoft.com/Products/Hazel/download | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') - expectedTeamID="86Z3GCJ4MF" - ;; -hpeasyadmin) - # credit: Søren Theilgaard (@theilgaard) - name="HP Easy Admin" - type="zip" - downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Admin.app.zip" - expectedTeamID="6HB5Y2QTA3" - ;; -hpeasystart) - # credit: Søren Theilgaard (@theilgaard) - name="HP Easy Start" - type="zip" - downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Start.app.zip" - expectedTeamID="6HB5Y2QTA3" - ;; -hyper) - name="Hyper" - type="dmg" - if [[ $(arch) == i386 ]]; then - archiveName="mac-x64.dmg" - elif [[ $(arch) == arm64 ]]; then - archiveName="mac-arm64.dmg" - fi - downloadURL=$(downloadURLFromGit vercel hyper ) - appNewVersion=$(versionFromGit vercel hyper) - expectedTeamID="JW6Y669B67" - ;; -icons) - # credit: Mischa van der Bent (@mischavdbent) - name="Icons" - type="zip" - downloadURL=$(downloadURLFromGit sap macOS-icon-generator ) - appNewVersion=$(versionFromGit sap macOS-icon-generator ) - expectedTeamID="7R5ZEU67FQ" - ;; -imazingprofileeditor) - # Credit: Bilal Habib @Pro4TLZZZ - name="iMazing Profile Editor" - type="dmg" - downloadURL="https://downloads.imazing.com/mac/iMazing-Profile-Editor/iMazingProfileEditorMac.dmg" - expectedTeamID="J5PR93692Y" - ;; -inkscape) - # credit: Søren Theilgaard (@theilgaard) - name="Inkscape" - type="dmg" - downloadURL="https://inkscape.org$(curl -fs https://inkscape.org$(curl -fsJL https://inkscape.org/release/ | grep "/release/" | grep en | head -n 1 | cut -d '"' -f 6)mac-os-x/1010-1015/dl/ | grep "click here" | cut -d '"' -f 2)" - #appNewVersion=$(curl -fsJL https://inkscape.org/release/ | grep "
<' '\n' | awk -F'"' '/x86_64.dmg/ {print $6}' | head -1)
- #appNewVersion=$( curl -fs https://www.vagrantup.com/downloads.html | grep -i "Current Version" )
- appNewVersion=$(versionFromGit hashicorp vagrant)
- expectedTeamID="D38WU7D763"
- ;;
-vanilla)
- name="Vanilla"
- type="dmg"
- downloadURL="https://macrelease.matthewpalmer.net/Vanilla.dmg"
- expectedTeamID="Z4JV2M65MH"
- ;;
-veracrypt)
- name="VeraCrypt"
- type="pkgInDmg"
- #downloadURL=$(curl -s -L "https://www.veracrypt.fr/en/Downloads.html" | grep -Eio 'href="https://launchpad.net/veracrypt/trunk/(.*)/+download/VeraCrypt_([0-9].*).dmg"' | cut -c7- | sed -e 's/"$//' | sed "s/+/+/g")
- downloadURL=$(curl -fs "https://www.veracrypt.fr/en/Downloads.html" | grep "https.*\.dmg" | grep -vi "legacy" | tr '"' '\n' | grep "^https.*" | grep -vi ".sig" | sed "s/+/+/g")
- appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*.*)\.dmg/\1/g' )
- expectedTeamID="Z933746L2S"
- ;;
-virtualbox)
- # credit: AP Orlebeke (@apizz)
- name="VirtualBox"
- type="pkgInDmg"
- pkgName="VirtualBox.pkg"
- downloadURL=$(curl -fs "https://www.virtualbox.org/wiki/Downloads" \
- | awk -F '"' "/OSX.dmg/ { print \$4 }")
- appNewVersion=$(curl -fs "https://www.virtualbox.org/wiki/Downloads" | awk -F '"' "/OSX.dmg/ { print \$4 }" | sed -E 's/.*virtualbox\/([0-9.]*)\/.*/\1/')
- expectedTeamID="VB5E2TV963"
- ;;
-viscosity)
- #credit: @matins
- name="Viscosity"
- type="dmg"
- downloadURL="https://www.sparklabs.com/downloads/Viscosity.dmg"
- appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z.\-]*%20([0-9.]*)\..*/\1/g' )
- expectedTeamID="34XR7GXFPX"
- ;;
-vivaldi)
- name="Vivaldi"
- type="tbz"
- downloadURL=$(curl -fsL "https://update.vivaldi.com/update/1.0/public/mac/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
- appNewVersion=$(curl -is "https://update.vivaldi.com/update/1.0/public/mac/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4)
- expectedTeamID="4XF3XNRN6Y"
- ;;
-vlc)
- name="VLC"
- type="dmg"
- if [[ $(arch) == "arm64" ]]; then
- downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 )
- appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 )
- elif [[ $(arch) == "i386" ]]; then
- downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 )
- appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 )
- fi
- expectedTeamID="75GAHG3SZQ"
- ;;
-vmwarehorizonclient)
- # credit: Oh4sh0 https://github.com/Oh4sh0
- name="VMware Horizon Client"
- type="dmg"
- downloadURL=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | grep -o 'Url.*..dmg"' | cut -d '"' -f3)
- appNewVersion=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | sed 's/.*-\(.*\)-.*/\1/')
- expectedTeamID="EG7KH642X6"
- ;;
-vscodium)
- # credit: AP Orlebeke (@apizz)
- name="VSCodium"
- type="dmg"
- downloadURL=$(curl -fs "https://api.github.com/repos/VSCodium/vscodium/releases/latest" | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ && ! /sha256/ { print \$4 }")
- #downloadURL=$(downloadURLFromGit VSCodium vscodium) # Too many versions
- appNewVersion=$(versionFromGit VSCodium vscodium)
- expectedTeamID="C7S3ZQ2B8V"
- appName="VSCodium.app"
- blockingProcesses=( Electron )
- ;;
-webexmeetings)
- # credit: Erik Stam (@erikstam)
- name="Cisco Webex Meetings"
- type="pkgInDmg"
- downloadURL="https://akamaicdn.webex.com/client/webexapp.dmg"
- expectedTeamID="DE8Y96K9QP"
- targetDir="/Applications"
- #blockingProcessesMaxCPU="5"
- blockingProcesses=( Webex )
- ;;
-webex|\
-webexteams)
- # credit: Erik Stam (@erikstam)
- name="Webex"
- type="dmg"
- if [[ $(arch) == arm64 ]]; then
- downloadURL="https://binaries.webex.com/WebexDesktop-MACOS-Apple-Silicon-Gold/Webex.dmg"
- elif [[ $(arch) == i386 ]]; then
- downloadURL="https://binaries.webex.com/WebexTeamsDesktop-MACOS-Gold/Webex.dmg"
- fi
- expectedTeamID="DE8Y96K9QP"
- ;;
-whatsapp)
- name="WhatsApp"
- type="dmg"
- downloadURL="https://web.whatsapp.com/desktop/mac/files/WhatsApp.dmg"
- expectedTeamID="57T9237FN3"
- ;;
-wickrme)
- # credit: Søren Theilgaard (@theilgaard)
- name="WickrMe"
- type="dmg"
- downloadURL=$( curl -fs https://me-download.wickr.com/api/download/me/download/mac | tr '"' '\n' | grep -e '^https://' )
- appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
- expectedTeamID="W8RC3R952A"
- ;;
-wickrpro)
- # credit: Søren Theilgaard (@theilgaard)
- name="WickrPro"
- type="dmg"
- downloadURL=$( curl -fs https://me-download.wickr.com/api/download/pro/download/mac | tr '"' '\n' | grep -e '^https://' )
- appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
- expectedTeamID="W8RC3R952A"
- ;;
-wireshark)
- # credit: Oh4sh0 https://github.com/Oh4sh0
- name="Wireshark"
- type="dmg"
- downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Intel%2064.dmg"
- appNewVersion=$(curl -fs https://www.wireshark.org/download.html | grep "Stable Release" | grep -o "(.*.)" | cut -f2 | head -1 | awk -F '[()]' '{print $2}')
- expectedTeamID="7Z6EMTD2C6"
- ;;
-wwdc)
- # credit: Søren Theilgaard (@theilgaard)
- name="WWDC"
- type="dmg"
- downloadURL=$(downloadURLFromGit insidegui WWDC)
- appNewVersion=$(versionFromGit insidegui WWDC)
- expectedTeamID="8C7439RJLG"
- ;;
-xink)
- name="Xink"
- type="zip"
- downloadURL="https://downloads.xink.io/macos/client"
- #appNewVersion=$() # Cannot find version history or release notes on home page
- expectedTeamID="F287823HVS"
- ;;
-xquartz)
- # credit: AP Orlebeke (@apizz)
- name="XQuartz"
- type="pkgInDmg"
- downloadURL=$(downloadURLFromGit XQuartz XQuartz)
- appNewVersion=$(versionFromGit XQuartz XQuartz)
- expectedTeamID="NA574AWV7E"
- ;;
-yubikeymanagerqt)
- # credit: Tadayuki Onishi (@kenchan0130)
- name="YubiKey Manager GUI"
- type="pkg"
- downloadURL="https://developers.yubico.com/yubikey-manager-qt/Releases/$(curl -sfL https://api.github.com/repos/Yubico/yubikey-manager-qt/releases/latest | awk -F '"' '/"tag_name"/ { print $4 }')-mac.pkg"
- #appNewVersion=$(curl -fs https://developers.yubico.com/yubikey-manager-qt/Releases/ | grep mac.pkg | head -1 | sed -E "s/.*-([0-9.]*)-mac.*/\1/") # does not work
- appNewVersion=$(versionFromGit Yubico yubikey-manager-qt)
- expectedTeamID="LQA3CS5MM7"
- ;;
-xeroxphaser7800)
- name="XeroxPhaser"
- type="pkgInDmg"
- downloadURL=$(curl -fs "https://www.support.xerox.com/en-us/product/phaser-7800/downloads?platform=macOSx11" | xmllint --html --format - 2>/dev/null | grep -o "https://.*XeroxDrivers.*.dmg")
- expectedTeamID="G59Y3XFNFR"
- ;;
-zappy)
- name="Zappy"
- type="appInDmgInZip"
- downloadURL="https://zappy.zapier.com/releases/zappy-latest.zip"
- expectedTeamID="6LS97Q5E79"
- ;;
-zoom)
- # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
- name="Zoom.us"
- type="pkg"
- downloadURL="https://zoom.us/client/latest/ZoomInstallerIT.pkg"
- appNewVersion=$(curl -fs -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" "https://zoom.us/download" | grep Version | head -n 1 | sed -E 's/.* ([0-9.]* \(.*\)).*/\1/') # credit: Søren Theilgaard (@theilgaard)
- expectedTeamID="BJ4HAAB9B3"
- blockingProcesses=( zoom.us )
- ;;
-zoomclient)
- name="zoom.us"
- type="pkg"
- packageID="us.zoom.pkg.videmeeting"
- downloadURL="https://zoom.us/client/latest/Zoom.pkg"
- expectedTeamID="BJ4HAAB9B3"
- #appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/zoom.us" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4) # Does not match packageID
- blockingProcesses=( zoom.us )
- #blockingProcessesMaxCPU="5"
- ;;
-zoomrooms)
- name="ZoomRooms"
- type="pkg"
- packageID="us.zoom.pkg.zp"
- downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg"
- appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
- expectedTeamID="BJ4HAAB9B3"
- blockingProcesses=( "ZoomPresence" )
- ;;
-zulujdk11)
- name="Zulu JDK 11"
- type="pkgInDmg"
- packageID="com.azulsystems.zulu.11"
- if [[ $(arch) == i386 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu11.*ca-jdk11.*x64.dmg" | sed 's/\\//g')
- elif [[ $(arch) == arm64 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu11.*ca-jdk11.*aarch64.dmg" | sed 's/\\//g')
- fi
- expectedTeamID="TDTHCUPYFR"
- appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
- appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
- ;;
-zulujdk13)
- name="Zulu JDK 13"
- type="pkgInDmg"
- packageID="com.azulsystems.zulu.13"
- if [[ $(arch) == i386 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu13.*ca-jdk13.*x64.dmg" | sed 's/\\//g')
- elif [[ $(arch) == arm64 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu13.*ca-jdk13.*aarch64.dmg" | sed 's/\\//g')
- fi
- expectedTeamID="TDTHCUPYFR"
- appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
- appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
- ;;
-zulujdk15)
- name="Zulu JDK 15"
- type="pkgInDmg"
- packageID="com.azulsystems.zulu.15"
- if [[ $(arch) == i386 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu15.*ca-jdk15.*x64.dmg" | sed 's/\\//g')
- elif [[ $(arch) == arm64 ]]; then
- downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '\n' | grep -o "https:.*/zulu15.*ca-jdk15.*aarch64.dmg" | sed 's/\\//g')
- fi
- expectedTeamID="TDTHCUPYFR"
- appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
- appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
- ;;
-
-# MARK: Add new labels after this line (let us sort them in the list)
-
-
-# MARK: Add new labels above here
-
-#cdef)
-# # cdef currently not signed
-# # credit: Søren Theilgaard (@theilgaard)
-# name="cdef"
-# type="pkg"
-# downloadURL=$(downloadURLFromGit Shufflepuck cdef)
-# appNewVersion=$(versionFromGit Shufflepuck cdef)
-# #expectedTeamID="EM3ER8T33A"
-# ;;
-#fontforge)
-# # FontForge Not signed
-# # credit: Søren Theilgaard (@theilgaard)
-# name="FontForge"
-# type="dmg"
-# downloadURL=$(downloadURLFromGit fontforge fontforge)
-# appNewVersion=$(versionFromGit fontforge fontforge)
-# expectedTeamID=""
-# ;;
-#notifier)
-# # not signed
-# # credit: Søren Theilgaard (@theilgaard)
-# name="dataJAR Notifier"
-# type="pkg"
-# #packageID="uk.co.dataJAR.Notifier" # Version 2.2.3 was actually "uk.co.dataJAR.Notifier-2.2.3" so unusable
-# downloadURL=$(downloadURLFromGit dataJAR Notifier)
-# appNewVersion=$(versionFromGit dataJAR Notifier)
-# expectedTeamID=""
-# blockingProcesses=( "Notifier" )
-# ;;
-# packages)
-# NOTE: Packages is signed but _not_ notarized, so spctl will reject it
-# name="Packages"
-# type="pkgInDmg"
-# pkgName="Install Packages.pkg"
-# downloadURL="http://s.sudre.free.fr/Software/files/Packages.dmg"
-# expectedTeamID="NL5M9E394P"
-# ;;
-# powershell)
-# NOTE: powershell installers are not notarized
-# # credit: Tadayuki Onishi (@kenchan0130)
-# name="PowerShell"
-# type="pkg"
-# downloadURL=$(curl -fs "https://api.github.com/repos/Powershell/Powershell/releases/latest" \
-# | awk -F '"' '/browser_download_url/ && /pkg/ { print $4 }' | grep -v lts )
-# expectedTeamID="UBF8T346G9"
-# ;;
-# powershell-lts)
-# NOTE: powershell installers are not notarized
-# # credit: Tadayuki Onishi (@kenchan0130)
-# name="PowerShell"
-# type="pkg"
-# downloadURL=$(curl -fs "https://api.github.com/repos/Powershell/Powershell/releases/latest" \
-# | awk -F '"' '/browser_download_url/ && /pkg/ { print $4 }' | grep lts)
-# expectedTeamID="UBF8T346G9"
-# ;;
-# vmwarefusion)
-# TODO: vmwarefusion installation process needs testing
-# # credit: Erik Stam (@erikstam)
-# name="VMware Fusion"
-# type="dmg"
-# downloadURL="https://www.vmware.com/go/getfusion"
-# appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*Fusion-([0-9.]*)-.*/\1/g' )
-# expectedTeamID="EG7KH642X6"
-# ;;
-#wordmat)
-# # WordMat currently not signed
-# # credit: Søren Theilgaard (@theilgaard)
-# name="WordMat"
-# type="pkg"
-# packageID="com.eduap.pkg.WordMat"
-# downloadURL=$(downloadURLFromGit Eduap-com WordMat)
-# #downloadURL=$(curl -fs "https://api.github.com/repos/Eduap-com/WordMat/releases/latest" | awk -F '"' "/browser_download_url/ && /pkg/ && ! /sig/ && ! /CLI/ && ! /sha256/ { print \$4 }")
-# appNewVersion=$(versionFromGit Eduap-com WordMat)
-# #curl -fs "https://api.github.com/repos/Eduap-com/WordMat/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g'
-# expectedTeamID=""
-# ;;
-
-
-# MARK: Microsoft
-
-# msupdate codes from:
-# https://docs.microsoft.com/en-us/deployoffice/mac/update-office-for-mac-using-msupdate
-
-# download link IDs from: https://macadmin.software
-
-microsoftautoupdate)
- name="Microsoft AutoUpdate"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=830196"
- #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.autoupdate.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/')
- appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "Microsoft_AutoUpdate.*pkg" | sed -E 's/[a-zA-Z_]*_([0-9.]*)_.*/\1/g' | cut -d "." -f 1-2)
- expectedTeamID="UBF8T346G9"
- # commented the updatetool for MSAutoupdate, because when Autoupdate is really
- # old or broken, you want to force a new install
- #updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
- #updateToolArguments=( --install --apps MSau04 )
- ;;
-microsoftcompanyportal)
- name="Company Portal"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=869655"
- #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"
- updateToolArguments=( --install --apps IMCP01 )
- ;;
-microsoftdefenderatp)
- name="Microsoft Defender ATP"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=2097502"
- 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"
- updateToolArguments=( --install --apps WDAV00 )
- ;;
-microsoftedge|\
-microsoftedgeconsumerstable)
- name="Microsoft Edge"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=2069148"
- #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"
- updateToolArguments=( --install --apps EDGE01 )
- ;;
-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"
- updateToolArguments=( --install --apps EDGE01 )
- ;;
-microsoftexcel)
- name="Microsoft Excel"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=525135"
- #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"
- updateToolArguments=( --install --apps XCEL2019 )
- ;;
-microsoftlicenseremovaltool)
- # credit: Isaac Ordonez (@isaac) macadmins slack
- name="Microsoft License Removal Tool"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=849815"
- expectedTeamID="QGS93ZLCU7"
- appNewVersion=$(curl -is "$downloadURL" | grep ocation: | grep -o "Microsoft_.*pkg" | cut -d "_" -f 5 | cut -d "." -f1-2)
- Company="Microsoft"
- ;;
-microsoftoffice365)
- name="MicrosoftOffice365"
- type="pkg"
- packageID="com.microsoft.pkg.licensing"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=525133"
- appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3)
- expectedTeamID="UBF8T346G9"
- # using MS PowerPoint as the 'stand-in' for the entire suite
- #appName="Microsoft PowerPoint.app"
- 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"
- updateToolArguments=( --install )
- ;;
-microsoftofficebusinesspro)
- name="MicrosoftOfficeBusinessPro"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=2009112"
- expectedTeamID="UBF8T346G9"
- # using MS PowerPoint as the 'stand-in' for the entire suite
- appName="Microsoft PowerPoint.app"
- 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"
- updateToolArguments=( --install )
- ;;
-microsoftonedrive)
- name="OneDrive"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=823060"
- #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"
- updateToolArguments=( --install --apps ONDR18 )
- ;;
-microsoftonenote)
- name="Microsoft OneNote"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=820886"
- #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"
- updateToolArguments=( --install --apps ONMC2019 )
- ;;
-microsoftoutlook)
- name="Microsoft Outlook"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=525137"
- #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"
- updateToolArguments=( --install --apps OPIM2019 )
- ;;
-microsoftpowerpoint)
- name="Microsoft PowerPoint"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=525136"
- #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"
- updateToolArguments=( --install --apps PPT32019 )
- ;;
-microsoftremotedesktop)
- name="Microsoft Remote Desktop"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=868963"
- #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"
- updateToolArguments=( --install --apps MSRD10 )
- ;;
-microsoftsharepointplugin)
- # Microsoft has marked this "oldpackage", should probably not be used anymore
- name="MicrosoftSharePointPlugin"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=800050"
- #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/oldpackage[id="com.microsoft.sharepointplugin.standalone"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/')
- expectedTeamID="UBF8T346G9"
- # TODO: determine blockingProcesses for SharePointPlugin
- ;;
-microsoftskypeforbusiness)
- name="Skype for Business"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=832978"
- #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"
- updateToolArguments=( --install --apps MSFB16 )
- ;;
-microsoftteams)
- name="Microsoft Teams"
- type="pkg"
- #packageID="com.microsoft.teams"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=869428"
- #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/')
- # Still using macadmin.software for version, as the path does not contain the version in a matching format. packageID can be used, but version is the same.
- expectedTeamID="UBF8T346G9"
- blockingProcesses=( Teams "Microsoft Teams Helper" )
- # Commenting out msupdate as it is not really supported *yet* for teams
- # updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
- # updateToolArguments=( --install --apps TEAM01 )
- ;;
-microsoftvisualstudiocode|\
-visualstudiocode)
- name="Visual Studio Code"
- type="zip"
- #downloadURL="https://go.microsoft.com/fwlink/?LinkID=620882" # Intel only
- downloadURL="https://go.microsoft.com/fwlink/?LinkID=2156837" # Universal
- appNewVersion=$(curl -fsL "https://code.visualstudio.com/Updates" | grep "/darwin" | grep -oiE ".com/([^>]+)([^<]+)/darwin" | cut -d "/" -f 2 | sed $'s/[^[:print:]\t]//g' | head -1 )
- expectedTeamID="UBF8T346G9"
- appName="Visual Studio Code.app"
- blockingProcesses=( Code )
- ;;
-microsoftword)
- name="Microsoft Word"
- type="pkg"
- downloadURL="https://go.microsoft.com/fwlink/?linkid=525134"
- #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"
- updateToolArguments=( --install --apps MSWD2019 )
- ;;
-microsoftyammer)
- name="Yammer"
- type="dmg"
- downloadURL="https://aka.ms/yammer_desktop_mac"
- #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/oldpackage[id="com.microsoft.yammer.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"
- #updateToolArguments=( --install --apps ?????? )
- ;;
-
-# this description is so you can provide all variables as arguments
-# it will only check if the required variables are setting
-valuesfromarguments)
- if [[ -z $name ]]; then
- printlog "need to provide 'name'"
- exit 1
- fi
- if [[ -z $type ]]; then
- printlog "need to provide 'type'"
- exit 1
- fi
- if [[ -z $downloadURL ]]; then
- printlog "need to provide 'downloadURL'"
- exit 1
- fi
- if [[ -z $expectedTeamID ]]; then
- printlog "need to provide 'expectedTeamID'"
- exit 1
- fi
- ;;
-
-# these descriptions exist for testing and are intentionally broken
-brokendownloadurl)
- name="Google Chrome"
- type="dmg"
- downloadURL="https://broken.com/broken.dmg"
- expectedTeamID="EQHXZ8M8AV"
- ;;
-brokenappname)
- name="brokenapp"
- type="dmg"
- downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
- expectedTeamID="EQHXZ8M8AV"
- ;;
-brokenteamid)
- name="Google Chrome"
- type="dmg"
- downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
- expectedTeamID="broken"
- ;;
-*)
- # unknown label
- #printlog "unknown label $label"
- cleanupAndExit 1 "unknown label $label"
- ;;
-esac
-
-
-# MARK: application download and installation starts here
-
-printlog "BLOCKING_PROCESS_ACTION=${BLOCKING_PROCESS_ACTION}"
-printlog "NOTIFY=${NOTIFY}"
-
-# Finding LOGO to use in dialogs
-case $LOGO in
- appstore)
- # Apple App Store on Mac
- if [[ $(sw_vers -buildVersion) > "19" ]]; then
- LOGO="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
- else
- LOGO="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
- fi
- ;;
- jamf)
- # Jamf Pro
- LOGO="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
- ;;
- mosyleb)
- # Mosyle Business
- LOGO="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
- ;;
- mosylem)
- # Mosyle Manager (education)
- LOGO="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
- ;;
- addigy)
- # Addigy
- LOGO="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
- ;;
-esac
-if [[ ! -a "${LOGO}" ]]; then
- if [[ $(sw_vers -buildVersion) > "19" ]]; then
- LOGO="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
- else
- LOGO="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
- fi
-fi
-printlog "LOGO=${LOGO}"
-
-# MARK: extract info from data
-if [ -z "$archiveName" ]; then
- case $type in
- dmg|pkg|zip|tbz)
- archiveName="${name}.$type"
- ;;
- pkgInDmg)
- archiveName="${name}.dmg"
- ;;
- *InZip)
- archiveName="${name}.zip"
- ;;
- updateronly)
- ;;
- *)
- printlog "Cannot handle type $type"
- cleanupAndExit 99
- ;;
- esac
-fi
-
-if [ -z "$appName" ]; then
- # when not given derive from name
- appName="$name.app"
-fi
-
-if [ -z "$targetDir" ]; then
- case $type in
- dmg|zip|tbz|app*)
- targetDir="/Applications"
- ;;
- pkg*)
- targetDir="/"
- ;;
- updateronly)
- ;;
- *)
- printlog "Cannot handle type $type"
- cleanupAndExit 99
- ;;
- esac
-fi
-
-if [[ -z $blockingProcesses ]]; then
- printlog "no blocking processes defined, using $name as default"
- blockingProcesses=( $name )
-fi
-
-# MARK: determine tmp dir
-if [ "$DEBUG" -ne 0 ]; then
- # for debugging use script dir as working directory
- tmpDir=$(dirname "$0")
-else
- # create temporary working directory
- tmpDir=$(mktemp -d )
-fi
-
-# MARK: change directory to temporary working directory
-printlog "Changing directory to $tmpDir"
-if ! cd "$tmpDir"; then
- printlog "error changing directory $tmpDir"
- cleanupAndExit 1
-fi
-
-# MARK: get installed version
-getAppVersion
-printlog "appversion: $appversion"
-
-# MARK: Exit if new version is the same as installed version (appNewVersion specified)
-# credit: Søren Theilgaard (@theilgaard)
-if [[ -n $appNewVersion ]]; then
- printlog "Latest version of $name is $appNewVersion"
- if [[ $appversion == $appNewVersion ]]; then
- if [[ $DEBUG -eq 0 ]]; then
- printlog "There is no newer version available."
- if [[ $INSTALL != "force" ]]; then
- message="$name, version $appNewVersion, is the latest version."
- if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
- printlog "notifying"
- 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."
- fi
- 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
-if [[ (-n $appversion && -n "$updateTool") || "$type" == "updateronly" ]]; then
- printlog "appversion & updateTool"
- if [[ $DEBUG -eq 0 ]]; then
- if runUpdateTool; then
- finishing
- cleanupAndExit 0
- elif [[ $type == "updateronly" ]];then
- printlog "type is $type so we end here."
- cleanupAndExit 0
- fi # otherwise continue
- else
- printlog "DEBUG mode 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"
-else
- # download the dmg
- printlog "Downloading $downloadURL to $archiveName"
- if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
- printlog "notifying"
- displaynotification "Downloading $name update" "Download in progress …"
- 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"
- fi
- cleanupAndExit 2
- fi
-fi
-
-# MARK: when user is logged in, and app is running, prompt user to quit app
-if [[ $BLOCKING_PROCESS_ACTION == "ignore" ]]; then
- printlog "ignoring blocking processes"
-else
- if [[ $currentUser != "loginwindow" ]]; then
- if [[ ${#blockingProcesses} -gt 0 ]]; then
- if [[ ${blockingProcesses[1]} != "NONE" ]]; then
- checkRunningProcesses
- fi
- fi
- fi
-fi
-
-# MARK: install the download
-printlog "Installing $name"
-if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
- printlog "notifying"
- displaynotification "Installing $name" "Installation in progress …"
-fi
-
-case $type in
- dmg)
- installFromDMG
- ;;
- pkg)
- installFromPKG
- ;;
- zip)
- installFromZIP
- ;;
- tbz)
- installFromTBZ
- ;;
- pkgInDmg)
- installPkgInDmg
- ;;
- pkgInZip)
- installPkgInZip
- ;;
- appInDmgInZip)
- installAppInDmgInZip
- ;;
- *)
- printlog "Cannot handle type $type"
- cleanupAndExit 99
- ;;
-esac
-
-# MARK: Finishing — print installed application location and version
-finishing
-
-# all done!
-cleanupAndExit 0
diff --git a/fragments/labels/1password7.txt b/fragments/labels/1password7.txt
new file mode 100644
index 0000000..872c058
--- /dev/null
+++ b/fragments/labels/1password7.txt
@@ -0,0 +1,10 @@
+
+1password7)
+ name="1Password 7"
+ type="pkg"
+ downloadURL="https://app-updates.agilebits.com/download/OPM7"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[0-9a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="2BUA8C4S2C"
+ blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" )
+ #forcefulQuit=YES
+ ;;
diff --git a/fragments/labels/4kvideodownloader.txt b/fragments/labels/4kvideodownloader.txt
new file mode 100644
index 0000000..c80fcec
--- /dev/null
+++ b/fragments/labels/4kvideodownloader.txt
@@ -0,0 +1,9 @@
+
+4kvideodownloader)
+ name="4K Video Downloader"
+ type="dmg"
+ downloadURL="$(curl -fsL "https://www.4kdownload.com/products/product-videodownloader" | grep -E -o "https:\/\/dl\.4kdownload\.com\/app\/4kvideodownloader_.*?.dmg\?source=website" | head -1)"
+ appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[0-9a-zA-Z]*_([0-9.]*)\.dmg.*/\1/g')
+ versionKey="CFBundleVersion"
+ expectedTeamID="GHQ37VJF83"
+ ;;
diff --git a/fragments/labels/8x8.txt b/fragments/labels/8x8.txt
new file mode 100644
index 0000000..e604f1f
--- /dev/null
+++ b/fragments/labels/8x8.txt
@@ -0,0 +1,10 @@
+
+8x8)
+ # credit: #D-A-James from MacAdmins Slack and Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="8x8 Work"
+ type="dmg"
+ downloadURL=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}')
+ # As for appNewVersion, it needs to be checked for newer version than 7.2.4
+ appNewVersion=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*-v([0-9\.]*)[-\.]*.*/\1/' )
+ expectedTeamID="FC967L3QRG"
+ ;;
diff --git a/fragments/labels/abstract.txt b/fragments/labels/abstract.txt
new file mode 100644
index 0000000..b83fcc6
--- /dev/null
+++ b/fragments/labels/abstract.txt
@@ -0,0 +1,8 @@
+
+abstract)
+ name="Abstract"
+ type="zip"
+ downloadURL="https://api.goabstract.com/releases/latest/download"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="77MZLZE47D"
+ ;;
diff --git a/fragments/labels/adobebrackets.txt b/fragments/labels/adobebrackets.txt
new file mode 100644
index 0000000..f1e8284
--- /dev/null
+++ b/fragments/labels/adobebrackets.txt
@@ -0,0 +1,8 @@
+
+adobebrackets)
+ name="Brackets"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit adobe brackets )
+ appNewVersion=$(versionFromGit adobe brackets )
+ expectedTeamID="JQ525L2MZD"
+ ;;
diff --git a/fragments/labels/adobeconnect.txt b/fragments/labels/adobeconnect.txt
new file mode 100644
index 0000000..88d23d8
--- /dev/null
+++ b/fragments/labels/adobeconnect.txt
@@ -0,0 +1,11 @@
+
+adobeconnect)
+ # credit: Oh4sh0 https://github.com/Oh4sh0
+ # Comment by Søren: I do not know this software.
+ # Looks like it's an Adobe installer in an app, so it will probably not work
+ name="AdobeConnectInstaller"
+ type="dmg"
+ downloadURL="http://www.adobe.com/go/ConnectSetupMac"
+ appNewVersion=$(curl -fs https://helpx.adobe.com/adobe-connect/connect-downloads-updates.html | grep "Mac" | grep version | head -1 | sed -E 's/.*\(version ([0-9\.]*),.*/\1/g')
+ expectedTeamID="JQ525L2MZD"
+ ;;
diff --git a/fragments/labels/adobereaderdc-update.txt b/fragments/labels/adobereaderdc-update.txt
new file mode 100644
index 0000000..ae15033
--- /dev/null
+++ b/fragments/labels/adobereaderdc-update.txt
@@ -0,0 +1,10 @@
+
+adobereaderdc-update)
+ name="Adobe Acrobat Reader DC"
+ type="pkgInDmg"
+ downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo http://ardownload.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDCUpd"$adobecurrent"_MUI.dmg)
+ appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt)
+ #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard)
+ expectedTeamID="JQ525L2MZD"
+ blockingProcesses=( "AdobeReader" )
+ ;;
diff --git a/fragments/labels/adobereaderdc.txt b/fragments/labels/adobereaderdc.txt
new file mode 100644
index 0000000..cc279d6
--- /dev/null
+++ b/fragments/labels/adobereaderdc.txt
@@ -0,0 +1,12 @@
+
+adobereaderdc|\
+adobereaderdc-install)
+ name="Adobe Acrobat Reader DC"
+ type="pkgInDmg"
+ packageID="com.adobe.acrobat.DC.reader.app.pkg.MUI"
+ downloadURL=$(curl --silent --fail -H "Sec-Fetch-Site: same-origin" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US;q=0.9,en;q=0.8" -H "DNT: 1" -H "Sec-Fetch-Mode: cors" -H "X-Requested-With: XMLHttpRequest" -H "Referer: https://get.adobe.com/reader/enterprise/" -H "Accept: */*" "https://get.adobe.com/reader/webservices/json/standalone/?platform_type=Macintosh&platform_dist=OSX&platform_arch=x86-32&language=English&eventname=readerotherversions" | grep -Eo '"download_url":.*?[^\]",' | head -n 1 | cut -d \" -f 4)
+ appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt)
+ #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard)
+ expectedTeamID="JQ525L2MZD"
+ blockingProcesses=( "AdobeReader" )
+ ;;
diff --git a/fragments/labels/aircall.txt b/fragments/labels/aircall.txt
new file mode 100644
index 0000000..df62b19
--- /dev/null
+++ b/fragments/labels/aircall.txt
@@ -0,0 +1,8 @@
+
+aircall)
+ # credit: @kris-anderson
+ name="Aircall"
+ type="dmg"
+ downloadURL="https://electron.aircall.io/download/osx"
+ expectedTeamID="3ML357Q795"
+ ;;
diff --git a/fragments/labels/airserver.txt b/fragments/labels/airserver.txt
new file mode 100644
index 0000000..8101168
--- /dev/null
+++ b/fragments/labels/airserver.txt
@@ -0,0 +1,9 @@
+
+airserver)
+ # credit: AP Orlebeke (@apizz)
+ name="AirServer"
+ type="dmg"
+ downloadURL="https://www.airserver.com/download/mac/latest"
+ #appNewVersion=$() # Cannot find version history or release notes on home page
+ expectedTeamID="6C755KS5W3"
+ ;;
diff --git a/fragments/labels/aldente.txt b/fragments/labels/aldente.txt
new file mode 100644
index 0000000..a689078
--- /dev/null
+++ b/fragments/labels/aldente.txt
@@ -0,0 +1,8 @@
+
+aldente)
+ name="AlDente"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit davidwernhart AlDente)
+ appNewVersion=$(versionFromGit davidwernhart AlDente)
+ expectedTeamID="3WVC84GB99"
+ ;;
diff --git a/fragments/labels/alfred.txt b/fragments/labels/alfred.txt
new file mode 100644
index 0000000..8b3fff2
--- /dev/null
+++ b/fragments/labels/alfred.txt
@@ -0,0 +1,10 @@
+
+alfred)
+ # credit: AP Orlebeke (@apizz)
+ name="Alfred"
+ type="dmg"
+ downloadURL=$(curl -fs https://www.alfredapp.com | awk -F '"' "/dmg/ {print \$2}" | head -1)
+ appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*Alfred_([0-9.]*)_.*/\1/')
+ appName="Alfred 4.app"
+ expectedTeamID="XZZXE9SED4"
+ ;;
diff --git a/fragments/labels/alttab.txt b/fragments/labels/alttab.txt
new file mode 100644
index 0000000..2e20d81
--- /dev/null
+++ b/fragments/labels/alttab.txt
@@ -0,0 +1,8 @@
+
+alttab)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="AltTab"
+ type="zip"
+ downloadURL=$(downloadURLFromGit lwouis alt-tab-macos)
+ expectedTeamID="QXD7GW8FHY"
+ ;;
diff --git a/fragments/labels/amazonchime.txt b/fragments/labels/amazonchime.txt
new file mode 100644
index 0000000..441faae
--- /dev/null
+++ b/fragments/labels/amazonchime.txt
@@ -0,0 +1,9 @@
+
+amazonchime)
+ # credit: @dvsjr macadmins slack
+ name="Amazon Chime"
+ type="dmg"
+ downloadURL="https://clients.chime.aws/mac/latest"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z.\-]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="94KV3E626L"
+ ;;
diff --git a/fragments/labels/amazonworkspaces.txt b/fragments/labels/amazonworkspaces.txt
new file mode 100644
index 0000000..ce7bf15
--- /dev/null
+++ b/fragments/labels/amazonworkspaces.txt
@@ -0,0 +1,9 @@
+
+amazonworkspaces)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Workspaces"
+ type="pkg"
+ downloadURL="https://d2td7dqidlhjx7.cloudfront.net/prod/global/osx/WorkSpaces.pkg"
+ appNewVersion=$(curl -fs https://d2td7dqidlhjx7.cloudfront.net/prod/iad/osx/WorkSpacesAppCast_macOS_20171023.xml | grep -o "Version*.*<" | head -1 | cut -d " " -f2 | cut -d "<" -f1)
+ expectedTeamID="94KV3E626L"
+ ;;
diff --git a/fragments/labels/androidfiletransfer.txt b/fragments/labels/androidfiletransfer.txt
new file mode 100644
index 0000000..24ab8cb
--- /dev/null
+++ b/fragments/labels/androidfiletransfer.txt
@@ -0,0 +1,8 @@
+
+androidfiletransfer)
+ #credit: Sam Ess (saess-sep)
+ name="Android File Transfer"
+ type="dmg"
+ downloadURL="https://dl.google.com/dl/androidjumper/mtp/current/AndroidFileTransfer.dmg"
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/anydesk.txt b/fragments/labels/anydesk.txt
new file mode 100644
index 0000000..0f64b6a
--- /dev/null
+++ b/fragments/labels/anydesk.txt
@@ -0,0 +1,8 @@
+
+anydesk)
+ name="AnyDesk"
+ type="dmg"
+ downloadURL="https://download.anydesk.com/anydesk.dmg"
+ appNewVersion="$(curl -fs https://anydesk.com/da/downloads/mac-os | grep -i "d-block" | grep -E -o ">v[0-9.]* .*MB" | sed -E 's/.*v([0-9.]*) .*/\1/g')"
+ expectedTeamID="KU6W3B6JMZ"
+ ;;
diff --git a/fragments/labels/apparency.txt b/fragments/labels/apparency.txt
new file mode 100644
index 0000000..6af2887
--- /dev/null
+++ b/fragments/labels/apparency.txt
@@ -0,0 +1,7 @@
+
+apparency)
+ name="Apparency"
+ type="dmg"
+ downloadURL="https://www.mothersruin.com/software/downloads/Apparency.dmg"
+ expectedTeamID="936EB786NH"
+ ;;
diff --git a/fragments/labels/appcleaner.txt b/fragments/labels/appcleaner.txt
new file mode 100644
index 0000000..aebbd39
--- /dev/null
+++ b/fragments/labels/appcleaner.txt
@@ -0,0 +1,9 @@
+
+appcleaner)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="AppCleaner"
+ type="zip"
+ downloadURL=$(curl -fs https://freemacsoft.net/appcleaner/Updates.xml | xpath '//rss/channel/*/enclosure/@url' 2>/dev/null | tr " " "
+" | sort | tail -1 | cut -d '"' -f 2)
+ expectedTeamID="X85ZX835W9"
+ ;;
diff --git a/fragments/labels/applenyfonts.txt b/fragments/labels/applenyfonts.txt
new file mode 100644
index 0000000..862aa4d
--- /dev/null
+++ b/fragments/labels/applenyfonts.txt
@@ -0,0 +1,8 @@
+
+applenyfonts)
+ name="Apple New York Font Collection"
+ type="pkgInDmg"
+ downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY-Font.dmg"
+ packageID="com.apple.pkg.NYFonts"
+ expectedTeamID="Development Update"
+ ;;
diff --git a/fragments/labels/applesfcompact.txt b/fragments/labels/applesfcompact.txt
new file mode 100644
index 0000000..e96750b
--- /dev/null
+++ b/fragments/labels/applesfcompact.txt
@@ -0,0 +1,8 @@
+
+applesfcompact)
+ name="San Francisco Compact"
+ type="pkgInDmg"
+ downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Compact.dmg"
+ packageID="com.apple.pkg.SanFranciscoCompact"
+ expectedTeamID="Development Update"
+ ;;
diff --git a/fragments/labels/applesfmono.txt b/fragments/labels/applesfmono.txt
new file mode 100644
index 0000000..c47fd46
--- /dev/null
+++ b/fragments/labels/applesfmono.txt
@@ -0,0 +1,8 @@
+
+applesfmono)
+ name="San Francisco Mono"
+ type="pkgInDmg"
+ downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"
+ packageID="com.apple.pkg.SFMonoFonts"
+ expectedTeamID="Software Update"
+ ;;
diff --git a/fragments/labels/applesfpro.txt b/fragments/labels/applesfpro.txt
new file mode 100644
index 0000000..bda7724
--- /dev/null
+++ b/fragments/labels/applesfpro.txt
@@ -0,0 +1,8 @@
+
+applesfpro)
+ name="San Francisco Pro"
+ type="pkgInDmg"
+ downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Pro.dmg"
+ packageID="com.apple.pkg.SanFranciscoPro"
+ expectedTeamID="Development Update"
+ ;;
diff --git a/fragments/labels/aquaskk.txt b/fragments/labels/aquaskk.txt
new file mode 100644
index 0000000..e6ddbd1
--- /dev/null
+++ b/fragments/labels/aquaskk.txt
@@ -0,0 +1,9 @@
+
+aquaskk)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="aquaskk"
+ type="pkg"
+ downloadURL=$(downloadURLFromGit codefirst aquaskk)
+ appNewVersion=$(versionFromGit codefirst aquaskk)
+ expectedTeamID="FPZK4WRGW7"
+ ;;
diff --git a/fragments/labels/arq7.txt b/fragments/labels/arq7.txt
new file mode 100644
index 0000000..2ecb01b
--- /dev/null
+++ b/fragments/labels/arq7.txt
@@ -0,0 +1,9 @@
+
+arq7)
+ name="Arq7"
+ type="pkg"
+ packageID="com.haystacksoftware.Arq"
+ downloadURL="https://arqbackup.com/download/arqbackup/Arq7.pkg"
+ appNewVersion="$(curl -fs "https://arqbackup.com" | grep -io "version .*[0-9.]*.* for macOS" | cut -d ">" -f2 | cut -d "<" -f1)"
+ expectedTeamID="48ZCSDVL96"
+ ;;
diff --git a/fragments/labels/atext.txt b/fragments/labels/atext.txt
new file mode 100644
index 0000000..61422a9
--- /dev/null
+++ b/fragments/labels/atext.txt
@@ -0,0 +1,8 @@
+
+atext)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="aText"
+ type="dmg"
+ downloadURL="https://trankynam.com/atext/downloads/aText.dmg"
+ expectedTeamID="KHEMQ2FD9E"
+ ;;
diff --git a/fragments/labels/atom.txt b/fragments/labels/atom.txt
new file mode 100644
index 0000000..ffb5be8
--- /dev/null
+++ b/fragments/labels/atom.txt
@@ -0,0 +1,9 @@
+
+atom)
+ name="Atom"
+ type="zip"
+ archiveName="atom-mac.zip"
+ downloadURL=$(downloadURLFromGit atom atom )
+ appNewVersion=$(versionFromGit atom atom)
+ expectedTeamID="VEKTX9H2N7"
+ ;;
diff --git a/fragments/labels/audacity.txt b/fragments/labels/audacity.txt
new file mode 100644
index 0000000..d7c64c1
--- /dev/null
+++ b/fragments/labels/audacity.txt
@@ -0,0 +1,9 @@
+
+audacity)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Audacity"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit audacity audacity)
+ appNewVersion=$(versionFromGit audacity audacity)
+ expectedTeamID="T3N4JQ7YY6"
+ ;;
diff --git a/fragments/labels/autodmg.txt b/fragments/labels/autodmg.txt
new file mode 100644
index 0000000..e20cbf6
--- /dev/null
+++ b/fragments/labels/autodmg.txt
@@ -0,0 +1,9 @@
+
+autodmg)
+ # credit: Mischa van der Bent (@mischavdbent)
+ name="AutoDMG"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit MagerValp AutoDMG)
+ appNewVersion=$(versionFromGit MagerValp AutoDMG)
+ expectedTeamID="5KQ3D3FG5H"
+ ;;
diff --git a/fragments/labels/autopkgr.txt b/fragments/labels/autopkgr.txt
new file mode 100644
index 0000000..40a7324
--- /dev/null
+++ b/fragments/labels/autopkgr.txt
@@ -0,0 +1,10 @@
+
+autopkgr)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="AutoPkgr"
+ type="dmg"
+ #downloadURL=$(curl -fs "https://api.github.com/repos/lindegroup/autopkgr/releases/latest" | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ && ! /sha256/ { print \$4 }")
+ downloadURL=$(downloadURLFromGit lindegroup autopkgr)
+ appNewVersion=$(versionFromGit lindegroup autopkgr)
+ expectedTeamID="JVY2ZR6SEF"
+ ;;
diff --git a/fragments/labels/aviatrix.txt b/fragments/labels/aviatrix.txt
new file mode 100644
index 0000000..c59b0df
--- /dev/null
+++ b/fragments/labels/aviatrix.txt
@@ -0,0 +1,8 @@
+
+aviatrix)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Aviatrix VPN Client"
+ type="pkg"
+ downloadURL="https://s3-us-west-2.amazonaws.com/aviatrix-download/AviatrixVPNClient/AVPNC_mac.pkg"
+ expectedTeamID="32953Z7NBN"
+ ;;
diff --git a/fragments/labels/awscli2.txt b/fragments/labels/awscli2.txt
new file mode 100644
index 0000000..a0eeb16
--- /dev/null
+++ b/fragments/labels/awscli2.txt
@@ -0,0 +1,10 @@
+
+awscli2)
+ # credit: Bilal Habib (@Pro4TLZZ)
+ name="AWSCLI"
+ type="pkg"
+ packageID="com.amazon.aws.cli2"
+ downloadURL="https://awscli.amazonaws.com/AWSCLIV2.pkg"
+ appNewVersion=$( curl -fs "https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst" | grep -i "CHANGELOG" -a4 | grep "[0-9.]" )
+ expectedTeamID="94KV3E626L"
+ ;;
diff --git a/fragments/labels/awsvpnclient.txt b/fragments/labels/awsvpnclient.txt
new file mode 100644
index 0000000..6ddf431
--- /dev/null
+++ b/fragments/labels/awsvpnclient.txt
@@ -0,0 +1,9 @@
+
+awsvpnclient)
+ name="AWS VPN Client"
+ type="pkg"
+ downloadURL="https://d20adtppz83p9s.cloudfront.net/OSX/latest/AWS_VPN_Client.pkg"
+ expectedTeamID="94KV3E626L"
+ appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '
+' | grep currentVersion | cut -d '"' -f 4)
+ ;;
diff --git a/fragments/labels/balenaetcher.txt b/fragments/labels/balenaetcher.txt
new file mode 100644
index 0000000..c04735c
--- /dev/null
+++ b/fragments/labels/balenaetcher.txt
@@ -0,0 +1,8 @@
+
+balenaetcher)
+ name="balenaEtcher"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit balena-io etcher )
+ appNewVersion=$(versionFromGit balena-io etcher )
+ expectedTeamID="66H43P8FRG"
+ ;;
diff --git a/fragments/labels/balsamiqwireframes.txt b/fragments/labels/balsamiqwireframes.txt
new file mode 100644
index 0000000..dbce248
--- /dev/null
+++ b/fragments/labels/balsamiqwireframes.txt
@@ -0,0 +1,8 @@
+
+balsamiqwireframes)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Balsamiq Wireframes"
+ type="dmg"
+ downloadURL=https://builds.balsamiq.com/bwd/$(curl -fs "https://builds.balsamiq.com" | awk -F "bwd/" "/dmg/ {print \$3}" | awk -F " " "{print \$1}" | sed "s/ /%20/g")
+ expectedTeamID="3DPKD72KQ7"
+ ;;
diff --git a/fragments/labels/bartender.txt b/fragments/labels/bartender.txt
new file mode 100644
index 0000000..d7a9e39
--- /dev/null
+++ b/fragments/labels/bartender.txt
@@ -0,0 +1,8 @@
+
+bartender)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Bartender 4"
+ type="dmg"
+ downloadURL="https://www.macbartender.com/B2/updates/B4Latest/Bartender%204.dmg"
+ expectedTeamID="8DD663WDX4"
+ ;;
diff --git a/fragments/labels/basecamp3.txt b/fragments/labels/basecamp3.txt
new file mode 100644
index 0000000..eb3e5c0
--- /dev/null
+++ b/fragments/labels/basecamp3.txt
@@ -0,0 +1,9 @@
+
+basecamp3)
+ #credit: @matins
+ name="Basecamp 3"
+ type="dmg"
+ downloadURL="https://bc3-desktop.s3.amazonaws.com/mac/basecamp3.dmg"
+ expectedTeamID="2WNYUYRS7G"
+ appName="Basecamp 3.app"
+ ;;
diff --git a/fragments/labels/bbedit.txt b/fragments/labels/bbedit.txt
new file mode 100644
index 0000000..24f9560
--- /dev/null
+++ b/fragments/labels/bbedit.txt
@@ -0,0 +1,8 @@
+
+bbedit)
+ name="BBEdit"
+ type="dmg"
+ downloadURL=$(curl -s https://versioncheck.barebones.com/BBEdit.xml | grep dmg | sort | tail -n1 | cut -d">" -f2 | cut -d"<" -f1)
+ appNewVersion=$(curl -s https://versioncheck.barebones.com/BBEdit.xml | grep dmg | sort | tail -n1 | sed -E 's/.*BBEdit_([0-9 .]*)\.dmg.*/\1/')
+ expectedTeamID="W52GZAXT98"
+ ;;
diff --git a/fragments/labels/bettertouchtool.txt b/fragments/labels/bettertouchtool.txt
new file mode 100644
index 0000000..39e13c8
--- /dev/null
+++ b/fragments/labels/bettertouchtool.txt
@@ -0,0 +1,9 @@
+
+bettertouchtool)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="BetterTouchTool"
+ type="zip"
+ downloadURL="https://folivora.ai/releases/BetterTouchTool.zip"
+ appNewVersion=$(curl -fs https://updates.folivora.ai/bettertouchtool_release_notes.html | grep BetterTouchTool | head -n 2 | tail -n 1 | sed -E 's/.* ([0-9\.]*) .*/\1/g')
+ expectedTeamID="DAFVSXZ82P"
+ ;;
diff --git a/fragments/labels/bitwarden.txt b/fragments/labels/bitwarden.txt
new file mode 100644
index 0000000..cb4b10a
--- /dev/null
+++ b/fragments/labels/bitwarden.txt
@@ -0,0 +1,8 @@
+
+bitwarden)
+ name="Bitwarden"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit bitwarden desktop )
+ appNewVersion=$(versionFromGit bitwarden desktop )
+ expectedTeamID="LTZ2PFU5D6"
+ ;;
diff --git a/fragments/labels/blender.txt b/fragments/labels/blender.txt
new file mode 100644
index 0000000..1bb8218
--- /dev/null
+++ b/fragments/labels/blender.txt
@@ -0,0 +1,8 @@
+
+blender)
+ name="blender"
+ type="dmg"
+ downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) && curl -sfL "$redirect" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
+ expectedTeamID="68UA947AUU"
+ ;;
diff --git a/fragments/labels/bluejeans.txt b/fragments/labels/bluejeans.txt
new file mode 100644
index 0000000..fa2f303
--- /dev/null
+++ b/fragments/labels/bluejeans.txt
@@ -0,0 +1,12 @@
+
+bluejeans)
+ name="BlueJeans"
+ type="pkg"
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeansInstaller.*arm.*.pkg" )
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeansInstaller.*x86.*.dmg" | sed 's/dmg/pkg/g')
+ fi
+ appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
+ expectedTeamID="HE4P42JBGN"
+ ;;
diff --git a/fragments/labels/boxdrive.txt b/fragments/labels/boxdrive.txt
new file mode 100644
index 0000000..b1e1287
--- /dev/null
+++ b/fragments/labels/boxdrive.txt
@@ -0,0 +1,13 @@
+
+boxdrive)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Box"
+ type="pkg"
+ if [[ $(arch) == "arm64" ]]; then
+ #Note: https://support.box.com/hc/en-us/articles/1500004479962-Box-Drive-support-on-devices-with-M1-chips
+ downloadURL="https://e3.boxcdn.net/desktop/pre-releases/mac/BoxDrive.2.20.140-M1-beta.pkg"
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL="https://e3.boxcdn.net/box-installers/desktop/releases/mac/Box.pkg"
+ fi
+ expectedTeamID="M683GB7CPW"
+ ;;
diff --git a/fragments/labels/brave.txt b/fragments/labels/brave.txt
new file mode 100644
index 0000000..c7a9bf0
--- /dev/null
+++ b/fragments/labels/brave.txt
@@ -0,0 +1,18 @@
+
+brave)
+ # credit: @securitygeneration
+ name="Brave Browser"
+ type="dmg"
+ if [[ $(arch) != "i386" ]]; then
+ printlog "Architecture: arm64 (not i386)"
+ downloadURL=$(curl -fsIL https://laptop-updates.brave.com/latest/osxarm64/release | grep -i "^location" | awk '{print $2}' | tr -d '
+')
+ else
+ printlog "Architecture: i386"
+ downloadURL=$(curl -fsIL https://laptop-updates.brave.com/latest/osx/release | grep -i "^location" | awk '{print $2}' | tr -d '
+')
+ fi
+# downloadURL=$(curl --location --fail --silent "https://updates.bravesoftware.com/sparkle/Brave-Browser/stable/appcast.xml" | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$(curl --location --fail --silent "https://updates.bravesoftware.com/sparkle/Brave-Browser/stable/appcast.xml" | xpath '//rss/channel/item[last()]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2)
+ expectedTeamID="KL8N8XSYF4"
+ ;;
diff --git a/fragments/labels/brokenappname.txt b/fragments/labels/brokenappname.txt
new file mode 100644
index 0000000..439335d
--- /dev/null
+++ b/fragments/labels/brokenappname.txt
@@ -0,0 +1,7 @@
+
+brokenappname)
+ name="brokenapp"
+ type="dmg"
+ downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/brokendownloadurl.txt b/fragments/labels/brokendownloadurl.txt
new file mode 100644
index 0000000..e538b43
--- /dev/null
+++ b/fragments/labels/brokendownloadurl.txt
@@ -0,0 +1,7 @@
+
+brokendownloadurl)
+ name="Google Chrome"
+ type="dmg"
+ downloadURL="https://broken.com/broken.dmg"
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/brokenteamid.txt b/fragments/labels/brokenteamid.txt
new file mode 100644
index 0000000..8601c8f
--- /dev/null
+++ b/fragments/labels/brokenteamid.txt
@@ -0,0 +1,7 @@
+
+brokenteamid)
+ name="Google Chrome"
+ type="dmg"
+ downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
+ expectedTeamID="broken"
+ ;;
diff --git a/fragments/labels/caffeine.txt b/fragments/labels/caffeine.txt
new file mode 100644
index 0000000..ecb5a61
--- /dev/null
+++ b/fragments/labels/caffeine.txt
@@ -0,0 +1,9 @@
+
+caffeine)
+ name="Caffeine"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit IntelliScape caffeine)
+ appNewVersion=$(versionFromGit IntelliScape caffeine)
+ expectedTeamID="YD6LEYT6WZ"
+ blockingProcesses=( Caffeine )
+ ;;
diff --git a/fragments/labels/cakebrew.txt b/fragments/labels/cakebrew.txt
new file mode 100644
index 0000000..7357c54
--- /dev/null
+++ b/fragments/labels/cakebrew.txt
@@ -0,0 +1,8 @@
+
+cakebrew)
+ name="Cakebrew"
+ type="zip"
+ downloadURL=$(curl -fsL "https://www.cakebrew.com/appcast/profileInfo.php" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$( curl -fsL "https://www.cakebrew.com/appcast/profileInfo.php" | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2 )
+ expectedTeamID="R85D3K8ATT"
+ ;;
diff --git a/fragments/labels/calibre.txt b/fragments/labels/calibre.txt
new file mode 100644
index 0000000..64de97c
--- /dev/null
+++ b/fragments/labels/calibre.txt
@@ -0,0 +1,9 @@
+
+calibre)
+ # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
+ name="calibre"
+ type="dmg"
+ downloadURL="https://calibre-ebook.com/dist/osx"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="NTY7FVCEKP"
+ ;;
diff --git a/fragments/labels/camostudio.txt b/fragments/labels/camostudio.txt
new file mode 100644
index 0000000..96558f5
--- /dev/null
+++ b/fragments/labels/camostudio.txt
@@ -0,0 +1,9 @@
+
+camostudio)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Camo Studio"
+ type="zip"
+ downloadURL="https://reincubate.com/res/labs/camo/camo-macos-latest.zip"
+ appNewVersion=$(curl -s -L https://reincubate.com/support/camo/release-notes/ | grep -m2 "has-m-t-0" | head -1 | cut -d ">" -f2 | cut -d " " -f1)
+ expectedTeamID="Q248YREB53"
+ ;;
diff --git a/fragments/labels/camtasia.txt b/fragments/labels/camtasia.txt
new file mode 100644
index 0000000..e1b0852
--- /dev/null
+++ b/fragments/labels/camtasia.txt
@@ -0,0 +1,7 @@
+
+camtasia)
+ name="Camtasia 2020"
+ type="dmg"
+ downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.dmg
+ expectedTeamID="7TQL462TU8"
+ ;;
diff --git a/fragments/labels/citrixworkspace.txt b/fragments/labels/citrixworkspace.txt
new file mode 100644
index 0000000..fbdc7eb
--- /dev/null
+++ b/fragments/labels/citrixworkspace.txt
@@ -0,0 +1,9 @@
+
+citrixworkspace)
+ #credit: Erik Stam (@erikstam) and #Philipp on MacAdmins Slack
+ name="Citrix Workspace"
+ type="pkgInDmg"
+ downloadURL="https:"$(curl -s -L "https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html#ctx-dl-eula-external" | grep "dmg?" | sed "s/.*rel=.\(.*\)..id=.*/\1/") # http://downloads.citrix.com/18823/CitrixWorkspaceApp.dmg?__gda__=1605791892_edc6786a90eb5197fb226861a8e27aa8
+ appNewVersion=$(curl -fs https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html | grep "Version" | head -1 | cut -d " " -f1 | cut -d ";" -f2 | cut -d "." -f 1-3)
+ expectedTeamID="S272Y5R93J"
+ ;;
diff --git a/fragments/labels/clevershare2.txt b/fragments/labels/clevershare2.txt
new file mode 100644
index 0000000..b8b7bc7
--- /dev/null
+++ b/fragments/labels/clevershare2.txt
@@ -0,0 +1,10 @@
+
+clevershare2)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Clevershare"
+ type="dmg"
+ downloadURL=$(curl -fs https://archive.clevertouch.com/clevershare2g | grep -i "_Mac" | tr '"' "
+" | grep "^http.*dmg")
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' )
+ expectedTeamID="P76M9BE8DQ"
+ ;;
diff --git a/fragments/labels/clickshare.txt b/fragments/labels/clickshare.txt
new file mode 100644
index 0000000..be83bba
--- /dev/null
+++ b/fragments/labels/clickshare.txt
@@ -0,0 +1,8 @@
+
+clickshare)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="ClickShare"
+ type="appInDmgInZip"
+ downloadURL=https://www.barco.com$(curl -fs "https://www.barco.com/en/clickshare/app" | grep -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
+ expectedTeamID="P6CDJZR997"
+ ;;
diff --git a/fragments/labels/code42.txt b/fragments/labels/code42.txt
new file mode 100644
index 0000000..9d853dd
--- /dev/null
+++ b/fragments/labels/code42.txt
@@ -0,0 +1,9 @@
+
+code42)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Code42"
+ type="pkgInDmg"
+ downloadURL=https://download.code42.com/installs/agent/latest-mac.dmg
+ expectedTeamID="9YV9435DHD"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/coderunner.txt b/fragments/labels/coderunner.txt
new file mode 100644
index 0000000..87489cf
--- /dev/null
+++ b/fragments/labels/coderunner.txt
@@ -0,0 +1,8 @@
+
+coderunner)
+ # credit: Erik Stam (@erikstam)
+ name="CodeRunner"
+ type="zip"
+ downloadURL="https://coderunnerapp.com/download"
+ expectedTeamID="R4GD98AJF9"
+ ;;
diff --git a/fragments/labels/cormorant.txt b/fragments/labels/cormorant.txt
new file mode 100644
index 0000000..6c85e24
--- /dev/null
+++ b/fragments/labels/cormorant.txt
@@ -0,0 +1,9 @@
+
+cormorant)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Cormorant"
+ type="zip"
+ downloadURL=$(curl -fs https://eclecticlight.co/downloads/ | grep -i $name | grep zip | sed -E 's/.*href=\"(https.*)\">.*/\1/g')
+ appNewVersion=$(curl -fs https://eclecticlight.co/downloads/ | grep zip | grep -o -E "$name [0-9.]*" | awk '{print $2}')
+ expectedTeamID="QWY4LRW926"
+ ;;
diff --git a/fragments/labels/cryptomator.txt b/fragments/labels/cryptomator.txt
new file mode 100644
index 0000000..fc9d83a
--- /dev/null
+++ b/fragments/labels/cryptomator.txt
@@ -0,0 +1,8 @@
+
+cryptomator)
+ name="Cryptomator"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit cryptomator cryptomator)
+ appNewVersion=$(versionFromGit cryptomator cryptomator)
+ expectedTeamID="YZQJQUHA3L"
+ ;;
diff --git a/fragments/labels/cyberduck.txt b/fragments/labels/cyberduck.txt
new file mode 100644
index 0000000..7f6215e
--- /dev/null
+++ b/fragments/labels/cyberduck.txt
@@ -0,0 +1,8 @@
+
+cyberduck)
+ name="Cyberduck"
+ type="zip"
+ downloadURL=$(curl -fs https://version.cyberduck.io/changelog.rss | xpath '//rss/channel/item/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 )
+ appNewVersion=$(curl -fs https://version.cyberduck.io/changelog.rss | xpath '//rss/channel/item/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2 )
+ expectedTeamID="G69SCX94XU"
+ ;;
diff --git a/fragments/labels/dangerzone.txt b/fragments/labels/dangerzone.txt
new file mode 100644
index 0000000..0ed65bb
--- /dev/null
+++ b/fragments/labels/dangerzone.txt
@@ -0,0 +1,8 @@
+
+dangerzone)
+ # credit: Micah Lee (@micahflee)
+ name="Dangerzone"
+ type="dmg"
+ downloadURL=$(curl -s https://dangerzone.rocks/ | grep https://github.com/firstlookmedia/dangerzone/releases/download | grep \.dmg | cut -d'"' -f2)
+ expectedTeamID="P24U45L8P5"
+ ;;
diff --git a/fragments/labels/darktable.txt b/fragments/labels/darktable.txt
new file mode 100644
index 0000000..0ee78f6
--- /dev/null
+++ b/fragments/labels/darktable.txt
@@ -0,0 +1,9 @@
+
+darktable)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="darktable"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit darktable-org darktable)
+ appNewVersion=$(versionFromGit darktable-org darktable)
+ expectedTeamID="85Q3K4KQRY"
+ ;;
diff --git a/fragments/labels/dbeaverce.txt b/fragments/labels/dbeaverce.txt
new file mode 100644
index 0000000..a24e501
--- /dev/null
+++ b/fragments/labels/dbeaverce.txt
@@ -0,0 +1,8 @@
+
+dbeaverce)
+ name="DBeaver"
+ type="dmg"
+ downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos.dmg"
+ expectedTeamID="42B6MDKMW8"
+ blockingProcesses=( dbeaver )
+ ;;
diff --git a/fragments/labels/debookee.txt b/fragments/labels/debookee.txt
new file mode 100644
index 0000000..68d92b8
--- /dev/null
+++ b/fragments/labels/debookee.txt
@@ -0,0 +1,7 @@
+
+debookee)
+ name="Debookee"
+ type="zip"
+ downloadURL=$(curl --location --fail --silent "https://www.iwaxx.com/debookee/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ expectedTeamID="AATLWWB4MZ"
+ ;;
diff --git a/fragments/labels/defaultfolderx.txt b/fragments/labels/defaultfolderx.txt
new file mode 100644
index 0000000..3d830c3
--- /dev/null
+++ b/fragments/labels/defaultfolderx.txt
@@ -0,0 +1,8 @@
+
+defaultfolderx)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Default Folder X"
+ type="dmg"
+ downloadURL=$(curl -fs "https://www.stclairsoft.com/cgi-bin/dl.cgi?DX" | awk -F '"' "/dmg/ {print \$4}" | head -2 | tail -1)
+ expectedTeamID="7HK42V8R9D"
+ ;;
diff --git a/fragments/labels/depnotify.txt b/fragments/labels/depnotify.txt
new file mode 100644
index 0000000..bb11d6b
--- /dev/null
+++ b/fragments/labels/depnotify.txt
@@ -0,0 +1,8 @@
+
+depnotify)
+ name="DEPNotify"
+ type="zip"
+ downloadURL="https://files.nomad.menu/DEPNotify.zip"
+ expectedTeamID="VRPY9KHGX6"
+ targetDir="/Applications/Utilities"
+ ;;
diff --git a/fragments/labels/desktoppr.txt b/fragments/labels/desktoppr.txt
new file mode 100644
index 0000000..048e79a
--- /dev/null
+++ b/fragments/labels/desktoppr.txt
@@ -0,0 +1,10 @@
+
+desktoppr)
+ name="desktoppr"
+ type="pkg"
+ packageID="com.scriptingosx.desktoppr"
+ downloadURL=$(downloadURLFromGit "scriptingosx" "desktoppr")
+ appNewVersion=$(versionFromGit "scriptingosx" "desktoppr")
+ expectedTeamID="JME5BW3F3R"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/detectxswift.txt b/fragments/labels/detectxswift.txt
new file mode 100644
index 0000000..8b797c4
--- /dev/null
+++ b/fragments/labels/detectxswift.txt
@@ -0,0 +1,9 @@
+
+detectxswift)
+ # credit: AP Orlebeke (@apizz)
+ name="DetectX Swift"
+ type="zip"
+ downloadURL="https://s3.amazonaws.com/sqwarq.com/PublicZips/DetectX_Swift.app.zip"
+ appNewVersion=$(curl -fs https://s3.amazonaws.com/sqwarq.com/AppCasts/dtxswift_release_notes.html | grep Version | head -1 | sed -E 's/.*Version ([0-9.]*)\<.*/\1/')
+ expectedTeamID="MAJ5XBJSG3"
+ ;;
diff --git a/fragments/labels/devonthink.txt b/fragments/labels/devonthink.txt
new file mode 100644
index 0000000..a2eeabc
--- /dev/null
+++ b/fragments/labels/devonthink.txt
@@ -0,0 +1,13 @@
+
+devonthink)
+ # It's a zipped dmg file, needs function installAppInDmgInZip
+ # credit: Søren Theilgaard (@theilgaard)
+ name="DEVONthink 3"
+ type="appInDmgInZip"
+ downloadURL=$( curl -fs https://www.devontechnologies.com/apps/devonthink | grep -i "download.devon" | tr '"' '
+' | tr "'" '
+' | grep -e '^https://' )
+ appNewVersion=$( echo ${downloadURL} | tr '/' '
+' | grep "[0-9]" | grep "[.]" | head -1 )
+ expectedTeamID="679S2QUWR8"
+ ;;
diff --git a/fragments/labels/dialpad.txt b/fragments/labels/dialpad.txt
new file mode 100644
index 0000000..057a3f5
--- /dev/null
+++ b/fragments/labels/dialpad.txt
@@ -0,0 +1,8 @@
+
+dialpad)
+ # credit: @ehosaka
+ name="Dialpad"
+ type="dmg"
+ downloadURL="https://storage.googleapis.com/dialpad_native/osx/Dialpad.dmg"
+ expectedTeamID="9V29MQSZ9M"
+ ;;
diff --git a/fragments/labels/discord.txt b/fragments/labels/discord.txt
new file mode 100644
index 0000000..76da437
--- /dev/null
+++ b/fragments/labels/discord.txt
@@ -0,0 +1,7 @@
+
+discord)
+ name="Discord"
+ type="dmg"
+ downloadURL="https://discordapp.com/api/download?platform=osx"
+ expectedTeamID="53Q6R32WPB"
+ ;;
diff --git a/fragments/labels/docker.txt b/fragments/labels/docker.txt
new file mode 100644
index 0000000..f94fc57
--- /dev/null
+++ b/fragments/labels/docker.txt
@@ -0,0 +1,14 @@
+
+docker)
+ # credit: @securitygeneration
+ name="Docker"
+ type="dmg"
+ #downloadURL="https://download.docker.com/mac/stable/Docker.dmg"
+ if [[ $(arch) == arm64 ]]; then
+ downloadURL="https://desktop.docker.com/mac/stable/arm64/Docker.dmg"
+ elif [[ $(arch) == i386 ]]; then
+ downloadURL="https://desktop.docker.com/mac/stable/amd64/Docker.dmg"
+ fi
+ appNewVersion=$(curl -ifs https://docs.docker.com/docker-for-mac/release-notes/ | grep ">Docker Desktop Community" | head -1 | sed -n -e 's/^.*Community //p' | cut -d '<' -f1)
+ expectedTeamID="9BNSXJN65R"
+ ;;
diff --git a/fragments/labels/drift.txt b/fragments/labels/drift.txt
new file mode 100644
index 0000000..7146dc7
--- /dev/null
+++ b/fragments/labels/drift.txt
@@ -0,0 +1,8 @@
+
+drift)
+ # credit Elena Ackley (@elenaelago)
+ name="Drift"
+ type="dmg"
+ downloadURL="https://drift-prod-desktop-installers.s3.amazonaws.com/mac/Drift-latest.dmg"
+ expectedTeamID="78559WUUR9"
+ ;;
diff --git a/fragments/labels/dropbox.txt b/fragments/labels/dropbox.txt
new file mode 100644
index 0000000..2c3da6f
--- /dev/null
+++ b/fragments/labels/dropbox.txt
@@ -0,0 +1,7 @@
+
+dropbox)
+ name="Dropbox"
+ type="dmg"
+ downloadURL="https://www.dropbox.com/download?plat=mac&full=1"
+ expectedTeamID="G7HH3F8CAK"
+ ;;
diff --git a/fragments/labels/easeusdatarecoverywizard.txt b/fragments/labels/easeusdatarecoverywizard.txt
new file mode 100644
index 0000000..5db8500
--- /dev/null
+++ b/fragments/labels/easeusdatarecoverywizard.txt
@@ -0,0 +1,10 @@
+
+easeusdatarecoverywizard)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="EaseUS Data Recovery Wizard"
+ type="dmg"
+ downloadURL=$( curl -fsIL https://down.easeus.com/product/mac_drw_free_setup | grep -i "^location" | awk '{print $2}' | tr -d '
+' )
+ #appNewVersion=""
+ expectedTeamID="DLLVW95FSM"
+ ;;
diff --git a/fragments/labels/egnyte.txt b/fragments/labels/egnyte.txt
new file mode 100644
index 0000000..bd34232
--- /dev/null
+++ b/fragments/labels/egnyte.txt
@@ -0,0 +1,9 @@
+
+egnyte)
+ # credit: #MoeMunyoki from MacAdmins Slack
+ name="Egnyte Connect"
+ type="pkg"
+ downloadURL="https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/latest/EgnyteConnectMac.pkg"
+ expectedTeamID="FELUD555VC"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/element.txt b/fragments/labels/element.txt
new file mode 100644
index 0000000..80fec29
--- /dev/null
+++ b/fragments/labels/element.txt
@@ -0,0 +1,8 @@
+
+element)
+ name="Element"
+ type="dmg"
+ downloadURL="https://packages.riot.im/desktop/install/macos/Element.dmg"
+ appNewVersion=$(versionFromGit vector-im element-desktop)
+ expectedTeamID="7J4U792NQT"
+ ;;
diff --git a/fragments/labels/eraseinstall.txt b/fragments/labels/eraseinstall.txt
new file mode 100644
index 0000000..0b5eb18
--- /dev/null
+++ b/fragments/labels/eraseinstall.txt
@@ -0,0 +1,7 @@
+
+eraseinstall)
+ name="EraseInstall"
+ type="pkg"
+ downloadURL=https://bitbucket.org$(curl -fs https://bitbucket.org/prowarehouse-nl/erase-install/downloads/ | grep pkg | cut -d'"' -f2 | head -n 1)
+ expectedTeamID="R55HK5K86Y"
+ ;;
diff --git a/fragments/labels/etrecheck.txt b/fragments/labels/etrecheck.txt
new file mode 100644
index 0000000..d359385
--- /dev/null
+++ b/fragments/labels/etrecheck.txt
@@ -0,0 +1,8 @@
+
+etrecheck)
+ # credit: @dvsjr macadmins slack
+ name="EtreCheckPro"
+ type="zip"
+ downloadURL="https://cdn.etrecheck.com/EtreCheckPro.zip"
+ expectedTeamID="U87NE528LC"
+ ;;
diff --git a/fragments/labels/evernote.txt b/fragments/labels/evernote.txt
new file mode 100644
index 0000000..d6dc866
--- /dev/null
+++ b/fragments/labels/evernote.txt
@@ -0,0 +1,9 @@
+
+evernote)
+ name="Evernote"
+ type="dmg"
+ downloadURL=$(curl -fs -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" "https://evernote.com/download" | grep -i ".dmg" | cut -d '"' -f2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
+ expectedTeamID="Q79WDW8YH9"
+ appName="Evernote.app"
+ ;;
diff --git a/fragments/labels/exelbanstats.txt b/fragments/labels/exelbanstats.txt
new file mode 100644
index 0000000..167a587
--- /dev/null
+++ b/fragments/labels/exelbanstats.txt
@@ -0,0 +1,9 @@
+
+exelbanstats)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Stats"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit exelban stats)
+ appNewVersion=$(versionFromGit exelban stats)
+ expectedTeamID="RP2S87B72W"
+ ;;
diff --git a/fragments/labels/fantastical.txt b/fragments/labels/fantastical.txt
new file mode 100644
index 0000000..cb58361
--- /dev/null
+++ b/fragments/labels/fantastical.txt
@@ -0,0 +1,9 @@
+
+fantastical)
+ # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
+ name="Fantastical"
+ type="zip"
+ downloadURL="https://flexibits.com/fantastical/download"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
+ expectedTeamID="85C27NK92C"
+ ;;
diff --git a/fragments/labels/favro.txt b/fragments/labels/favro.txt
new file mode 100644
index 0000000..a296c11
--- /dev/null
+++ b/fragments/labels/favro.txt
@@ -0,0 +1,8 @@
+
+favro)
+ name="Favro"
+ type="dmg"
+ downloadURL="https://download.favro.com/FavroDesktop/macOS/x64/$(curl -fs https://download.favro.com/FavroDesktop/macOS/x64/Latest.html | cut -d ">" -f1 | cut -d "=" -f 4 | cut -d '"' -f1)"
+ appNewVersion="$(curl -fs https://download.favro.com/FavroDesktop/macOS/x64/Latest.html | cut -d ">" -f1 | cut -d "=" -f 4 | cut -d '"' -f1 | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')"
+ expectedTeamID="PUA8Q354ZF"
+ ;;
diff --git a/fragments/labels/ferdi.txt b/fragments/labels/ferdi.txt
new file mode 100644
index 0000000..e362f9f
--- /dev/null
+++ b/fragments/labels/ferdi.txt
@@ -0,0 +1,8 @@
+
+ferdi)
+ name="Ferdi"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit getferdi ferdi )
+ appNewVersion=$(versionFromGit getferdi ferdi )
+ expectedTeamID="B6J9X9DWFL"
+ ;;
diff --git a/fragments/labels/figma.txt b/fragments/labels/figma.txt
new file mode 100644
index 0000000..2990f15
--- /dev/null
+++ b/fragments/labels/figma.txt
@@ -0,0 +1,7 @@
+
+figma)
+ name="Figma"
+ type="zip"
+ downloadURL="https://desktop.figma.com/mac/Figma.zip"
+ expectedTeamID="T8RA8NE3B7"
+ ;;
diff --git a/fragments/labels/firefox.txt b/fragments/labels/firefox.txt
new file mode 100644
index 0000000..b3ac600
--- /dev/null
+++ b/fragments/labels/firefox.txt
@@ -0,0 +1,9 @@
+
+firefox)
+ name="Firefox"
+ type="dmg"
+ downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
+ appNewVersion=$(/usr/bin/curl https://www.mozilla.org/en-US/firefox/releases/ --silent | /usr/bin/grep '/dev/null | cut -d '"' -f 2)
+ expectedTeamID="V85GBYB7B9"
+ ;;
diff --git a/fragments/labels/gimp.txt b/fragments/labels/gimp.txt
new file mode 100644
index 0000000..37dd6b4
--- /dev/null
+++ b/fragments/labels/gimp.txt
@@ -0,0 +1,8 @@
+
+gimp)
+ name="GIMP-2.10"
+ type="dmg"
+ downloadURL=https://$(curl -fs https://www.gimp.org/downloads/ | grep -m 1 -o "download.*gimp-.*.dmg")
+ appNewVersion=$(echo $downloadURL | cut -d "-" -f 2)
+ expectedTeamID="T25BQ8HSJF"
+ ;;
diff --git a/fragments/labels/githubdesktop.txt b/fragments/labels/githubdesktop.txt
new file mode 100644
index 0000000..26b07ef
--- /dev/null
+++ b/fragments/labels/githubdesktop.txt
@@ -0,0 +1,12 @@
+
+githubdesktop)
+ name="GitHub Desktop"
+ type="zip"
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL="https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64"
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL="https://central.github.com/deployments/desktop/desktop/latest/darwin"
+ fi
+ appNewVersion=$(curl -fsL https://central.github.com/deployments/desktop/desktop/changelog.json | awk -F '{' '/"version"/ { print $2 }' | sed -E 's/.*,\"version\":\"([0-9.]*)\".*/\1/g')
+ expectedTeamID="VEKTX9H2N7"
+ ;;
diff --git a/fragments/labels/golang.txt b/fragments/labels/golang.txt
new file mode 100644
index 0000000..2c053ad
--- /dev/null
+++ b/fragments/labels/golang.txt
@@ -0,0 +1,13 @@
+
+golang)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="GoLang"
+ type="pkg"
+ packageID="org.golang.go"
+ downloadURL="$(curl -fsIL "https://golang.org$(curl -fs "https://golang.org/dl/" | grep -i "downloadBox" | grep "pkg" | tr '"' '
+' | grep "pkg")" | grep -i "^location" | awk '{print $2}' | tr -d '
+')"
+ appNewVersion="$( echo "${downloadURL}" | sed -E 's/.*\/(go[0-9.]*)\..*/\1/g' )" # Version includes letters "go"
+ expectedTeamID="EQHXZ8M8AV"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/googlechrome.txt b/fragments/labels/googlechrome.txt
new file mode 100644
index 0000000..729df2b
--- /dev/null
+++ b/fragments/labels/googlechrome.txt
@@ -0,0 +1,15 @@
+
+googlechrome)
+ name="Google Chrome"
+ type="dmg"
+ if [[ $(arch) != "i386" ]]; then
+ printlog "Architecture: arm64 (not i386)"
+ downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg"
+ appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') # Credit: William Smith (@meck)
+ else
+ printlog "Architecture: i386"
+ downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
+ appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}') # Credit: William Smith (@meck)
+ fi
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/googlechromepkg.txt b/fragments/labels/googlechromepkg.txt
new file mode 100644
index 0000000..f5cf36b
--- /dev/null
+++ b/fragments/labels/googlechromepkg.txt
@@ -0,0 +1,14 @@
+
+googlechromepkg)
+ name="Google Chrome"
+ type="pkg"
+ #
+ # Note: this url acknowledges that you accept the terms of service
+ # https://support.google.com/chrome/a/answer/9915669
+ #
+ downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg"
+ expectedTeamID="EQHXZ8M8AV"
+ updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent"
+ updateToolArguments=( -runMode oneshot -userInitiated YES )
+ updateToolRunAsCurrentUser=1
+ ;;
diff --git a/fragments/labels/googledrive.txt b/fragments/labels/googledrive.txt
new file mode 100644
index 0000000..c92c3a9
--- /dev/null
+++ b/fragments/labels/googledrive.txt
@@ -0,0 +1,11 @@
+
+googledrive|\
+googledrivefilestream)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Google Drive File Stream"
+ type="pkgInDmg"
+ packageID="com.google.drivefs"
+ downloadURL="https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg" # downloadURL="https://dl.google.com/drive-file-stream/GoogleDrive.dmg"
+ blockingProcesses=( "Google Docs" "Google Drive" "Google Sheets" "Google Slides" )
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/googledrivebackupandsync.txt b/fragments/labels/googledrivebackupandsync.txt
new file mode 100644
index 0000000..cbed2c8
--- /dev/null
+++ b/fragments/labels/googledrivebackupandsync.txt
@@ -0,0 +1,7 @@
+
+googledrivebackupandsync)
+ name="Backup and Sync"
+ type="dmg"
+ downloadURL="https://dl.google.com/drive/InstallBackupAndSync.dmg"
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/googleearth.txt b/fragments/labels/googleearth.txt
new file mode 100644
index 0000000..c4c2890
--- /dev/null
+++ b/fragments/labels/googleearth.txt
@@ -0,0 +1,7 @@
+
+googleearth)
+ name="Google Earth Pro"
+ type="pkgInDmg"
+ downloadURL="https://dl.google.com/earth/client/advanced/current/GoogleEarthProMac-Intel.dmg"
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/googlejapaneseinput.txt b/fragments/labels/googlejapaneseinput.txt
new file mode 100644
index 0000000..edcc94f
--- /dev/null
+++ b/fragments/labels/googlejapaneseinput.txt
@@ -0,0 +1,10 @@
+
+googlejapaneseinput)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="GoogleJapaneseInput"
+ type="pkgInDmg"
+ pkgName="GoogleJapaneseInput.pkg"
+ downloadURL="https://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg"
+ blockingProcesses=( NONE )
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/googlesoftwareupdate.txt b/fragments/labels/googlesoftwareupdate.txt
new file mode 100644
index 0000000..743dfc1
--- /dev/null
+++ b/fragments/labels/googlesoftwareupdate.txt
@@ -0,0 +1,9 @@
+
+googlesoftwareupdate)
+ name="Install Google Software Update"
+ type="pkgInDmg"
+ pkgName="Install Google Software Update.app/Contents/Resources/GSUInstall.pkg"
+ downloadURL="https://dl.google.com/mac/install/googlesoftwareupdate.dmg"
+ blockingProcesses=( NONE )
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/gotomeeting.txt b/fragments/labels/gotomeeting.txt
new file mode 100644
index 0000000..43f3178
--- /dev/null
+++ b/fragments/labels/gotomeeting.txt
@@ -0,0 +1,8 @@
+
+gotomeeting)
+ # credit: @matins
+ name="GoToMeeting"
+ type="dmg"
+ downloadURL="https://link.gotomeeting.com/latest-dmg"
+ expectedTeamID="GFNFVT632V"
+ ;;
diff --git a/fragments/labels/gpgsuite.txt b/fragments/labels/gpgsuite.txt
new file mode 100644
index 0000000..7b406d9
--- /dev/null
+++ b/fragments/labels/gpgsuite.txt
@@ -0,0 +1,9 @@
+
+gpgsuite)
+ # credit: Micah Lee (@micahflee)
+ name="GPG Suite"
+ type="pkgInDmg"
+ pkgName="Install.pkg"
+ downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4)
+ expectedTeamID="PKV8ZPD836"
+ ;;
diff --git a/fragments/labels/gpgsync.txt b/fragments/labels/gpgsync.txt
new file mode 100644
index 0000000..308a9da
--- /dev/null
+++ b/fragments/labels/gpgsync.txt
@@ -0,0 +1,8 @@
+
+gpgsync)
+ # credit: Micah Lee (@micahflee)
+ name="GPG Sync"
+ type="pkg"
+ downloadURL="https://github.com$(curl -s -L https://github.com/firstlookmedia/gpgsync/releases/latest | grep /firstlookmedia/gpgsync/releases/download | grep \.pkg | cut -d'"' -f2)"
+ expectedTeamID="P24U45L8P5"
+ ;;
diff --git a/fragments/labels/grandperspective.txt b/fragments/labels/grandperspective.txt
new file mode 100644
index 0000000..b465eac
--- /dev/null
+++ b/fragments/labels/grandperspective.txt
@@ -0,0 +1,7 @@
+
+grandperspective)
+ name="GrandPerspective"
+ type="dmg"
+ downloadURL="https://sourceforge.net/projects/grandperspectiv/files/latest/download"
+ expectedTeamID="3Z75QZGN66"
+ ;;
diff --git a/fragments/labels/grasshopper.txt b/fragments/labels/grasshopper.txt
new file mode 100644
index 0000000..620031a
--- /dev/null
+++ b/fragments/labels/grasshopper.txt
@@ -0,0 +1,9 @@
+
+grasshopper)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Grasshopper"
+ type="dmg"
+ downloadURL="https://dl.grasshopper.com/Grasshopper.dmg"
+ pkgName="Grasshopper.dmg"
+ expectedTeamID="KD6L2PTK2Q"
+ ;;
diff --git a/fragments/labels/gyazo.txt b/fragments/labels/gyazo.txt
new file mode 100644
index 0000000..4bcfc2b
--- /dev/null
+++ b/fragments/labels/gyazo.txt
@@ -0,0 +1,9 @@
+
+gyazo)
+ # credit: @matins
+ name="Gyazo"
+ type="dmg"
+ appNewVersion=$(curl -is "https://formulae.brew.sh/cask/gyazo" | grep 'Current version:' | grep -o "Gyazo.*dmg" | cut -d "-" -f 2 | awk -F ".dmg" '{print $1}')
+ downloadURL="https://files.gyazo.com/setup/Gyazo-${appNewVersion}.dmg"
+ expectedTeamID="9647Y3B7A4"
+ ;;
diff --git a/fragments/labels/gyazogif.txt b/fragments/labels/gyazogif.txt
new file mode 100644
index 0000000..77baca5
--- /dev/null
+++ b/fragments/labels/gyazogif.txt
@@ -0,0 +1,10 @@
+
+gyazogif)
+ # credit: @matins
+ # This is identical to gyazo, but the download contains two apps on the DMG
+ name="Gyazo GIF"
+ type="dmg"
+ appNewVersion=$(curl -is "https://formulae.brew.sh/cask/gyazo" | grep 'Current version:' | grep -o "Gyazo.*dmg" | cut -d "-" -f 2 | awk -F ".dmg" '{print $1}')
+ downloadURL="https://files.gyazo.com/setup/Gyazo-${appNewVersion}.dmg"
+ expectedTeamID="9647Y3B7A4"
+ ;;
diff --git a/fragments/labels/hancock.txt b/fragments/labels/hancock.txt
new file mode 100644
index 0000000..7c9e976
--- /dev/null
+++ b/fragments/labels/hancock.txt
@@ -0,0 +1,9 @@
+
+hancock)
+ # Credit: Bilal Habib @Pro4TLZZZ
+ name="Hancock"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit JeremyAgost Hancock )
+ appNewVersion=$(versionFromGit JeremyAgost Hancock )
+ expectedTeamID="SWD2B88S58"
+ ;;
diff --git a/fragments/labels/handbrake.txt b/fragments/labels/handbrake.txt
new file mode 100644
index 0000000..127156b
--- /dev/null
+++ b/fragments/labels/handbrake.txt
@@ -0,0 +1,9 @@
+
+handbrake)
+ name="HandBrake"
+ type="dmg"
+ downloadURL=$(curl --silent --fail "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" \
+ | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ { print \$4 }")
+ appNewVersion=$(curl -sf "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" | awk -F '"' "/tag_name/ { print \$4 }")
+ expectedTeamID="5X9DE89KYV"
+ ;;
diff --git a/fragments/labels/hazel.txt b/fragments/labels/hazel.txt
new file mode 100644
index 0000000..f51f5d4
--- /dev/null
+++ b/fragments/labels/hazel.txt
@@ -0,0 +1,10 @@
+
+hazel)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Hazel"
+ type="dmg"
+ downloadURL=$(curl -fsI https://www.noodlesoft.com/Products/Hazel/download | grep -i "^location" | awk '{print $2}' | tr -d '
+')
+ appNewVersion=$(curl -fsI https://www.noodlesoft.com/Products/Hazel/download | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')
+ expectedTeamID="86Z3GCJ4MF"
+ ;;
diff --git a/fragments/labels/hpeasyadmin.txt b/fragments/labels/hpeasyadmin.txt
new file mode 100644
index 0000000..52cbb9e
--- /dev/null
+++ b/fragments/labels/hpeasyadmin.txt
@@ -0,0 +1,8 @@
+
+hpeasyadmin)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="HP Easy Admin"
+ type="zip"
+ downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Admin.app.zip"
+ expectedTeamID="6HB5Y2QTA3"
+ ;;
diff --git a/fragments/labels/hpeasystart.txt b/fragments/labels/hpeasystart.txt
new file mode 100644
index 0000000..7e6a839
--- /dev/null
+++ b/fragments/labels/hpeasystart.txt
@@ -0,0 +1,8 @@
+
+hpeasystart)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="HP Easy Start"
+ type="zip"
+ downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Start.app.zip"
+ expectedTeamID="6HB5Y2QTA3"
+ ;;
diff --git a/fragments/labels/hyper.txt b/fragments/labels/hyper.txt
new file mode 100644
index 0000000..589468c
--- /dev/null
+++ b/fragments/labels/hyper.txt
@@ -0,0 +1,13 @@
+
+hyper)
+ name="Hyper"
+ type="dmg"
+ if [[ $(arch) == i386 ]]; then
+ archiveName="mac-x64.dmg"
+ elif [[ $(arch) == arm64 ]]; then
+ archiveName="mac-arm64.dmg"
+ fi
+ downloadURL=$(downloadURLFromGit vercel hyper )
+ appNewVersion=$(versionFromGit vercel hyper)
+ expectedTeamID="JW6Y669B67"
+ ;;
diff --git a/fragments/labels/icons.txt b/fragments/labels/icons.txt
new file mode 100644
index 0000000..e5f60fc
--- /dev/null
+++ b/fragments/labels/icons.txt
@@ -0,0 +1,9 @@
+
+icons)
+ # credit: Mischa van der Bent (@mischavdbent)
+ name="Icons"
+ type="zip"
+ downloadURL=$(downloadURLFromGit sap macOS-icon-generator )
+ appNewVersion=$(versionFromGit sap macOS-icon-generator )
+ expectedTeamID="7R5ZEU67FQ"
+ ;;
diff --git a/fragments/labels/imazingprofileeditor.txt b/fragments/labels/imazingprofileeditor.txt
new file mode 100644
index 0000000..721bdee
--- /dev/null
+++ b/fragments/labels/imazingprofileeditor.txt
@@ -0,0 +1,8 @@
+
+imazingprofileeditor)
+ # Credit: Bilal Habib @Pro4TLZZZ
+ name="iMazing Profile Editor"
+ type="dmg"
+ downloadURL="https://downloads.imazing.com/mac/iMazing-Profile-Editor/iMazingProfileEditorMac.dmg"
+ expectedTeamID="J5PR93692Y"
+ ;;
diff --git a/fragments/labels/inkscape.txt b/fragments/labels/inkscape.txt
new file mode 100644
index 0000000..dc2b1b9
--- /dev/null
+++ b/fragments/labels/inkscape.txt
@@ -0,0 +1,9 @@
+
+inkscape)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Inkscape"
+ type="dmg"
+ downloadURL="https://inkscape.org$(curl -fs https://inkscape.org$(curl -fsJL https://inkscape.org/release/ | grep "/release/" | grep en | head -n 1 | cut -d '"' -f 6)mac-os-x/1010-1015/dl/ | grep "click here" | cut -d '"' -f 2)"
+ #appNewVersion=$(curl -fsJL https://inkscape.org/release/ | grep "
Inkscape" | cut -d '>' -f 3 | cut -d '<' -f 1 | sed 's/[^0-9.]*//g') # Can't figure out where exact new version is found. Currently returns 1.0, but version is "1.0.0 (4035a4f)"
+ expectedTeamID="SW3D6BB6A6"
+ ;;
diff --git a/fragments/labels/installomator_theile.txt b/fragments/labels/installomator_theile.txt
new file mode 100644
index 0000000..a66aa51
--- /dev/null
+++ b/fragments/labels/installomator_theile.txt
@@ -0,0 +1,12 @@
+
+installomator_theile)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Installomator"
+ type="pkg"
+ packageID="dk.theilgaard.pkg.Installomator"
+ downloadURL=$(downloadURLFromGit theile Installomator )
+ appNewVersion=$(versionFromGit theile Installomator )
+ #appCustomVersion(){/usr/local/bin/Installomator.sh version | tail -1 | awk '{print $4}'}
+ expectedTeamID="FXW6QXBFW5"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/istatmenus.txt b/fragments/labels/istatmenus.txt
new file mode 100644
index 0000000..c861694
--- /dev/null
+++ b/fragments/labels/istatmenus.txt
@@ -0,0 +1,10 @@
+
+istatmenus)
+ # credit: AP Orlebeke (@apizz)
+ name="iStat Menus"
+ type="zip"
+ downloadURL="https://download.bjango.com/istatmenus/"
+ expectedTeamID="Y93TK974AT"
+ appNewVersion=$(curl -fs https://bjango.com/mac/istatmenus/versionhistory/ | grep "" | head -1 | sed -E 's/([0-9.]*)<\/h3>/\1/')
+ blockingProcesses=( "iStat Menus" "iStatMenusAgent" "iStat Menus Status" )
+ ;;
diff --git a/fragments/labels/iterm2.txt b/fragments/labels/iterm2.txt
new file mode 100644
index 0000000..9cde2a4
--- /dev/null
+++ b/fragments/labels/iterm2.txt
@@ -0,0 +1,9 @@
+
+iterm2)
+ name="iTerm"
+ type="zip"
+ downloadURL="https://iterm2.com/downloads/stable/latest"
+ appNewVersion=$(curl -is https://iterm2.com/downloads/stable/latest | grep location: | grep -o "iTerm2.*zip" | cut -d "-" -f 2 | cut -d '.' -f1 | sed 's/_/./g')
+ expectedTeamID="H7V7XYVQ7D"
+ blockingProcesses=( iTerm2 )
+ ;;
diff --git a/fragments/labels/jabradirect.txt b/fragments/labels/jabradirect.txt
new file mode 100644
index 0000000..4c0161f
--- /dev/null
+++ b/fragments/labels/jabradirect.txt
@@ -0,0 +1,8 @@
+
+jabradirect)
+ name="Jabra Direct"
+ type="dmg"
+ downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg"
+ 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/jamfconnect.txt b/fragments/labels/jamfconnect.txt
new file mode 100644
index 0000000..4a00c2e
--- /dev/null
+++ b/fragments/labels/jamfconnect.txt
@@ -0,0 +1,8 @@
+
+jamfconnect)
+ name="Jamf Connect"
+ type="pkgInDmg"
+ packageID="com.jamf.connect"
+ downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
+ expectedTeamID="483DWKW443"
+ ;;
diff --git a/fragments/labels/jamfmigrator.txt b/fragments/labels/jamfmigrator.txt
new file mode 100644
index 0000000..7667096
--- /dev/null
+++ b/fragments/labels/jamfmigrator.txt
@@ -0,0 +1,9 @@
+
+jamfmigrator)
+ # credit: Mischa van der Bent
+ name="jamf-migrator"
+ type="zip"
+ downloadURL=$(downloadURLFromGit jamf JamfMigrator)
+ #appNewVersion=$(versionFromGit jamf JamfMigrator)
+ expectedTeamID="PS2F6S478M"
+ ;;
diff --git a/fragments/labels/jamfpppcutility.txt b/fragments/labels/jamfpppcutility.txt
new file mode 100644
index 0000000..3b8e19b
--- /dev/null
+++ b/fragments/labels/jamfpppcutility.txt
@@ -0,0 +1,9 @@
+
+jamfpppcutility)
+ # credit: Mischa van der Bent
+ name="PPPC Utility"
+ type="zip"
+ downloadURL=$(downloadURLFromGit jamf PPPC-Utility)
+ appNewVersion=$(versionFromGit jamf PPPC-Utility)
+ expectedTeamID="483DWKW443"
+ ;;
diff --git a/fragments/labels/jamfreenroller.txt b/fragments/labels/jamfreenroller.txt
new file mode 100644
index 0000000..e1a0683
--- /dev/null
+++ b/fragments/labels/jamfreenroller.txt
@@ -0,0 +1,9 @@
+
+jamfreenroller)
+ # credit: Mischa van der Bent
+ name="ReEnroller"
+ type="zip"
+ downloadURL=$(downloadURLFromGit jamf ReEnroller)
+ #appNewVersion=$(versionFromGit jamf ReEnroller)
+ expectedTeamID="PS2F6S478M"
+ ;;
diff --git a/fragments/labels/jetbrainsintellijidea.txt b/fragments/labels/jetbrainsintellijidea.txt
new file mode 100644
index 0000000..5277b9c
--- /dev/null
+++ b/fragments/labels/jetbrainsintellijidea.txt
@@ -0,0 +1,9 @@
+
+jetbrainsintellijidea)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="IntelliJ IDEA"
+ type="dmg"
+ downloadURL="https://download.jetbrains.com/product?code=II&latest&distribution=mac"
+ appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=II&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
+ expectedTeamID="2ZEFAR8TH3"
+ ;;
diff --git a/fragments/labels/jetbrainsintellijideace.txt b/fragments/labels/jetbrainsintellijideace.txt
new file mode 100644
index 0000000..6e0dace
--- /dev/null
+++ b/fragments/labels/jetbrainsintellijideace.txt
@@ -0,0 +1,9 @@
+
+jetbrainsintellijideace|\
+intellijideace)
+ name="IntelliJ IDEA CE"
+ type="dmg"
+ downloadURL="https://download.jetbrains.com/product?code=IIC&latest&distribution=mac"
+ appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=IIC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
+ expectedTeamID="2ZEFAR8TH3"
+ ;;
diff --git a/fragments/labels/jetbrainsphpstorm.txt b/fragments/labels/jetbrainsphpstorm.txt
new file mode 100644
index 0000000..ee4e5a8
--- /dev/null
+++ b/fragments/labels/jetbrainsphpstorm.txt
@@ -0,0 +1,9 @@
+
+jetbrainsphpstorm)
+ # credit: Casey Jensen (@cajenson01 on MacAdmins Slack)Appended by Skylar Damiano @catdad on MacAdmins Slack
+ name="JetBrains PHPStorm"
+ type="dmg"
+ downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o "mac*.*.dmg" | cut -d '"' -f5)
+ appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
+ expectedTeamID="2ZEFAR8TH3"
+ ;;
diff --git a/fragments/labels/jetbrainspycharm.txt b/fragments/labels/jetbrainspycharm.txt
new file mode 100644
index 0000000..98b3ffb
--- /dev/null
+++ b/fragments/labels/jetbrainspycharm.txt
@@ -0,0 +1,14 @@
+
+jetbrainspycharm)
+ # This is the Pro version of PyCharm.
+ # Do not confuse with PyCharm CE.
+ name="PyCharm"
+ type="dmg"
+ appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCP&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
+ if [[ $(arch) == i386 ]]; then
+ downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=mac"
+ elif [[ $(arch) == arm64 ]]; then
+ downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=macM1"
+ fi
+ expectedTeamID="2ZEFAR8TH3"
+ ;;
diff --git a/fragments/labels/jetbrainspycharmce.txt b/fragments/labels/jetbrainspycharmce.txt
new file mode 100644
index 0000000..3151bad
--- /dev/null
+++ b/fragments/labels/jetbrainspycharmce.txt
@@ -0,0 +1,13 @@
+
+jetbrainspycharmce|\
+pycharmce)
+ name="PyCharm CE"
+ type="dmg"
+ appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
+ if [[ $(arch) == i386 ]]; then
+ downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=mac"
+ elif [[ $(arch) == arm64 ]]; then
+ downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=macM1"
+ fi
+ expectedTeamID="2ZEFAR8TH3"
+ ;;
diff --git a/fragments/labels/karabinerelements.txt b/fragments/labels/karabinerelements.txt
new file mode 100644
index 0000000..9b5ca0e
--- /dev/null
+++ b/fragments/labels/karabinerelements.txt
@@ -0,0 +1,9 @@
+
+karabinerelements)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="Karabiner-Elements"
+ type="pkgInDmg"
+ downloadURL=$(downloadURLFromGit pqrs-org Karabiner-Elements)
+ appNewVersion=$(versionFromGit pqrs-org Karabiner-Elements)
+ expectedTeamID="G43BCU2T37"
+ ;;
diff --git a/fragments/labels/keepassxc.txt b/fragments/labels/keepassxc.txt
new file mode 100644
index 0000000..4c561a1
--- /dev/null
+++ b/fragments/labels/keepassxc.txt
@@ -0,0 +1,13 @@
+
+keepassxc)
+ name="KeePassXC"
+ type="dmg"
+ if [[ $(arch) == i386 ]]; then
+ archiveName="x86_64.dmg"
+ elif [[ $(arch) == arm64 ]]; then
+ archiveName="arm64.dmg"
+ fi
+ downloadURL=$(downloadURLFromGit keepassxreboot keepassxc)
+ appNewVersion=$(versionFromGit keepassxreboot keepassxc)
+ expectedTeamID="G2S7P7J672"
+ ;;
diff --git a/fragments/labels/keka.txt b/fragments/labels/keka.txt
new file mode 100644
index 0000000..690dbcf
--- /dev/null
+++ b/fragments/labels/keka.txt
@@ -0,0 +1,8 @@
+
+keka)
+ name="Keka"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit aonez Keka)
+ appNewVersion=$(versionFromGit aonez Keka)
+ expectedTeamID="4FG648TM2A"
+ ;;
diff --git a/fragments/labels/keyboardmaestro.txt b/fragments/labels/keyboardmaestro.txt
new file mode 100644
index 0000000..edf3135
--- /dev/null
+++ b/fragments/labels/keyboardmaestro.txt
@@ -0,0 +1,11 @@
+
+keyboardmaestro)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Keyboard Maestro"
+ type="zip"
+ downloadURL="https://download.keyboardmaestro.com/"
+ #appNewVersion=$( curl -fs https://www.stairways.com/press/ | grep -i "releases Keyboard Maestro" | head -1 | sed -E 's/.*releases Keyboard Maestro ([0-9.]*)<.*/\1/g' ) # Text based from web site
+ appNewVersion=$( curl -fs "https://www.stairways.com/press/rss.xml" | xpath '//rss/channel/item/title[contains(text(), "releases Keyboard Maestro")]' 2>/dev/null | head -1 | sed -E 's/.*releases Keyboard Maestro ([0-9.]*)<.*/\1/g' ) # uses XML, so might be a little more precise/future proof
+ expectedTeamID="QMHRBA4LGH"
+ blockingProcesses=( "Keyboard Maestro Engine" "Keyboard Maestro" )
+ ;;
diff --git a/fragments/labels/klokki.txt b/fragments/labels/klokki.txt
new file mode 100644
index 0000000..f20b4a3
--- /dev/null
+++ b/fragments/labels/klokki.txt
@@ -0,0 +1,8 @@
+
+klokki)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Klokki"
+ type="dmg"
+ downloadURL="https://storage.yandexcloud.net/klokki/Klokki.dmg"
+ expectedTeamID="Q9SATZMHPG"
+ ;;
diff --git a/fragments/labels/knockknock.txt b/fragments/labels/knockknock.txt
new file mode 100644
index 0000000..e8e33dd
--- /dev/null
+++ b/fragments/labels/knockknock.txt
@@ -0,0 +1,9 @@
+
+knockknock)
+ name="KnockKnock"
+ type="zip"
+ downloadURL=$( curl -fs "https://objective-see.com/products/knockknock.html" | grep https | grep "$type" | head -1 | tr '"' "
+" | grep "^http" )
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
+ expectedTeamID="VBG97UB4TA"
+ ;;
diff --git a/fragments/labels/krisp.txt b/fragments/labels/krisp.txt
new file mode 100644
index 0000000..11ef4c4
--- /dev/null
+++ b/fragments/labels/krisp.txt
@@ -0,0 +1,8 @@
+
+krisp)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="Krisp"
+ type="pkg"
+ downloadURL="https://download.krisp.ai/mac"
+ expectedTeamID="U5R26XM5Z2"
+ ;;
diff --git a/fragments/labels/krita.txt b/fragments/labels/krita.txt
new file mode 100644
index 0000000..78f05cd
--- /dev/null
+++ b/fragments/labels/krita.txt
@@ -0,0 +1,9 @@
+
+krita)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="krita"
+ type="dmg"
+ downloadURL=$( curl -fs "https://krita.org/en/download/krita-desktop/" | grep ".*https.*stable.*dmg.*" | head -1 | sed -E 's/.*(https.*dmg).*/\1/g' )
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="5433B4KXM8"
+ ;;
diff --git a/fragments/labels/lastpass.txt b/fragments/labels/lastpass.txt
new file mode 100644
index 0000000..6f0edb7
--- /dev/null
+++ b/fragments/labels/lastpass.txt
@@ -0,0 +1,8 @@
+
+lastpass)
+ name="LastPass"
+ type="dmg"
+ downloadURL="https://download.cloud.lastpass.com/mac/LastPass.dmg"
+ expectedTeamID="N24REP3BMN"
+ Company="Marvasol, Inc DBA LastPass"
+ ;;
diff --git a/fragments/labels/launchbar.txt b/fragments/labels/launchbar.txt
new file mode 100644
index 0000000..952c99b
--- /dev/null
+++ b/fragments/labels/launchbar.txt
@@ -0,0 +1,8 @@
+
+launchbar)
+ name="LaunchBar"
+ type="dmg"
+ downloadURL=$(curl -fs "https://obdev.at/products/launchbar/download.html" | xmllint --html --format - 2>/dev/null | grep -m 1 -o "https://.*.dmg")
+ appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="MLZF7K7B5R"
+ ;;
diff --git a/fragments/labels/lexarrecoverytool.txt b/fragments/labels/lexarrecoverytool.txt
new file mode 100644
index 0000000..2b1e359
--- /dev/null
+++ b/fragments/labels/lexarrecoverytool.txt
@@ -0,0 +1,10 @@
+
+lexarrecoverytool)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Lexar Recovery Tool"
+ type="appInDmgInZip"
+ downloadURL="https://www.lexar.com$( curl -fs "https://www.lexar.com/support/downloads/" | grep -i "mac" | grep -i "recovery" | head -1 | tr '"' '
+' | grep -i ".zip" )"
+ #appNewVersion=""
+ expectedTeamID="Y8HM6WR2DV"
+ ;;
diff --git a/fragments/labels/libreoffice.txt b/fragments/labels/libreoffice.txt
new file mode 100644
index 0000000..df0f64f
--- /dev/null
+++ b/fragments/labels/libreoffice.txt
@@ -0,0 +1,9 @@
+
+libreoffice)
+ # credit: Micah Lee (@micahflee)
+ name="LibreOffice"
+ type="dmg"
+ downloadURL="https://download.documentfoundation.org/libreoffice/stable/$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)/mac/x86_64/LibreOffice_$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)_MacOS_x86-64.dmg"
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)_.*/\1/g' )
+ expectedTeamID="7P5S3ZLCN7"
+ ;;
diff --git a/fragments/labels/logitechoptions.txt b/fragments/labels/logitechoptions.txt
new file mode 100644
index 0000000..7d8b93f
--- /dev/null
+++ b/fragments/labels/logitechoptions.txt
@@ -0,0 +1,10 @@
+
+logitechoptions)
+ # credit: AP Orlebeke (@apizz)
+ name="Logitech Options"
+ type="pkgInZip"
+ downloadURL=$(curl -fs -L https://www.logitech.com/en-us/product/options | grep -m 1 -o "https.*zip" | sed 's/\"//' | awk '{print $1}')
+ appNewVersion=$(curl -fs -L https://www.logitech.com/en-us/product/options | grep -m 1 -o "https.*zip" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*_([0-9\.]*)[-\.].*/\1/' )
+ pkgName="LogiMgr Installer ${appNewVersion}.app/Contents/Resources/LogiMgr.pkg"
+ expectedTeamID="QED4VVPZWA"
+ ;;
diff --git a/fragments/labels/longversion.txt b/fragments/labels/longversion.txt
new file mode 100644
index 0000000..a4beb0d
--- /dev/null
+++ b/fragments/labels/longversion.txt
@@ -0,0 +1,6 @@
+
+longversion)
+ # print the script version
+ printlog "Installomater: version $VERSION ($VERSIONDATE)"
+ exit 0
+ ;;
diff --git a/fragments/labels/loom.txt b/fragments/labels/loom.txt
new file mode 100644
index 0000000..b7675b8
--- /dev/null
+++ b/fragments/labels/loom.txt
@@ -0,0 +1,9 @@
+
+loom)
+ # credit: Lance Stephens (@pythoninthegrass on MacAdmins Slack)
+ name="Loom"
+ type="dmg"
+ downloadURL=https://cdn.loom.com/desktop-packages/$(curl -fs https://s3-us-west-2.amazonaws.com/loom.desktop.packages/loom-inc-production/desktop-packages/latest-mac.yml | awk '/url/ && /dmg/ {print $3}' | head -1)
+ appNewVersion=$(curl -fs https://s3-us-west-2.amazonaws.com/loom.desktop.packages/loom-inc-production/desktop-packages/latest-mac.yml | awk '/version/ {print $2}' )
+ expectedTeamID="QGD2ZPXZZG"
+ ;;
diff --git a/fragments/labels/lucifer.txt b/fragments/labels/lucifer.txt
new file mode 100644
index 0000000..1498ae5
--- /dev/null
+++ b/fragments/labels/lucifer.txt
@@ -0,0 +1,9 @@
+
+lucifer)
+ # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
+ name="Lucifer"
+ type="zip"
+ downloadURL="https://www.hexedbits.com/downloads/lucifer.zip"
+ appNewVersion=$( curl -fs "https://www.hexedbits.com/lucifer/" | grep "Latest version" | sed -E 's/.*Latest version ([0-9.]*),.*/\1/g' )
+ expectedTeamID="5VRJU68BZ5"
+ ;;
diff --git a/fragments/labels/lulu.txt b/fragments/labels/lulu.txt
new file mode 100644
index 0000000..fcc72df
--- /dev/null
+++ b/fragments/labels/lulu.txt
@@ -0,0 +1,9 @@
+
+lulu)
+ name="LuLu"
+ type="dmg"
+ downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "
+" | grep "^http" )
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
+ expectedTeamID="VBG97UB4TA"
+ ;;
diff --git a/fragments/labels/macfuse.txt b/fragments/labels/macfuse.txt
new file mode 100644
index 0000000..72d6083
--- /dev/null
+++ b/fragments/labels/macfuse.txt
@@ -0,0 +1,8 @@
+
+macfuse)
+ name="FUSE for macOS"
+ type="pkgInDmg"
+ downloadURL=$(downloadURLFromGit osxfuse osxfuse)
+ appNewVersion=$(versionFromGit osxfuse osxfuse)
+ expectedTeamID="3T5GSNBU6W"
+ ;;
diff --git a/fragments/labels/malwarebytes.txt b/fragments/labels/malwarebytes.txt
new file mode 100644
index 0000000..b7bb7ed
--- /dev/null
+++ b/fragments/labels/malwarebytes.txt
@@ -0,0 +1,8 @@
+
+malwarebytes)
+ name="Malwarebytes"
+ type="pkg"
+ downloadURL="https://downloads.malwarebytes.com/file/mb3-mac"
+ appNewVersion=$(curl -Ifs https://downloads.malwarebytes.com/file/mb3-mac | grep "location" | sed -E 's/.*-Mac-([0-9\.]*)\.pkg/\1/g')
+ expectedTeamID="GVZRY6KDKR"
+ ;;
diff --git a/fragments/labels/mattermost.txt b/fragments/labels/mattermost.txt
new file mode 100644
index 0000000..99f8d16
--- /dev/null
+++ b/fragments/labels/mattermost.txt
@@ -0,0 +1,13 @@
+
+mattermost)
+ name="Mattermost"
+ type="dmg"
+ if [[ $(arch) == i386 ]]; then
+ archiveName="mac.dmg"
+ elif [[ $(arch) == arm64 ]]; then
+ archiveName="mac-m1.dmg"
+ fi
+ downloadURL=$(downloadURLFromGit mattermost desktop)
+ appNewVersion=$(versionFromGit mattermost desktop )
+ expectedTeamID="UQ8HT4Q2XM"
+ ;;
diff --git a/fragments/labels/menumeters.txt b/fragments/labels/menumeters.txt
new file mode 100644
index 0000000..717ea58
--- /dev/null
+++ b/fragments/labels/menumeters.txt
@@ -0,0 +1,8 @@
+
+menumeters)
+ name="MenuMeters"
+ type="zip"
+ downloadURL=$(downloadURLFromGit yujitach MenuMeters )
+ appNewVersion=$(versionFromGit yujitach MenuMeters )
+ expectedTeamID="95AQ7YKR5A"
+ ;;
diff --git a/fragments/labels/microsoftautoupdate.txt b/fragments/labels/microsoftautoupdate.txt
new file mode 100644
index 0000000..0d2977a
--- /dev/null
+++ b/fragments/labels/microsoftautoupdate.txt
@@ -0,0 +1,13 @@
+
+microsoftautoupdate)
+ name="Microsoft AutoUpdate"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=830196"
+ #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.autoupdate.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/([0-9.]*)<.*/\1/')
+ appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "Microsoft_AutoUpdate.*pkg" | sed -E 's/[a-zA-Z_]*_([0-9.]*)_.*/\1/g' | cut -d "." -f 1-2)
+ expectedTeamID="UBF8T346G9"
+ # commented the updatetool for MSAutoupdate, because when Autoupdate is really
+ # old or broken, you want to force a new install
+ #updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
+ #updateToolArguments=( --install --apps MSau04 )
+ ;;
diff --git a/fragments/labels/microsoftcompanyportal.txt b/fragments/labels/microsoftcompanyportal.txt
new file mode 100644
index 0000000..2a5373d
--- /dev/null
+++ b/fragments/labels/microsoftcompanyportal.txt
@@ -0,0 +1,11 @@
+
+microsoftcompanyportal)
+ name="Company Portal"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=869655"
+ #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"
+ updateToolArguments=( --install --apps IMCP01 )
+ ;;
diff --git a/fragments/labels/microsoftdefenderatp.txt b/fragments/labels/microsoftdefenderatp.txt
new file mode 100644
index 0000000..f12b6e5
--- /dev/null
+++ b/fragments/labels/microsoftdefenderatp.txt
@@ -0,0 +1,11 @@
+
+microsoftdefenderatp)
+ name="Microsoft Defender ATP"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=2097502"
+ 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"
+ updateToolArguments=( --install --apps WDAV00 )
+ ;;
diff --git a/fragments/labels/microsoftedge.txt b/fragments/labels/microsoftedge.txt
new file mode 100644
index 0000000..cbe1369
--- /dev/null
+++ b/fragments/labels/microsoftedge.txt
@@ -0,0 +1,12 @@
+
+microsoftedge|\
+microsoftedgeconsumerstable)
+ name="Microsoft Edge"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=2069148"
+ #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"
+ updateToolArguments=( --install --apps EDGE01 )
+ ;;
diff --git a/fragments/labels/microsoftedgeenterprisestable.txt b/fragments/labels/microsoftedgeenterprisestable.txt
new file mode 100644
index 0000000..fa3467f
--- /dev/null
+++ b/fragments/labels/microsoftedgeenterprisestable.txt
@@ -0,0 +1,11 @@
+
+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"
+ updateToolArguments=( --install --apps EDGE01 )
+ ;;
diff --git a/fragments/labels/microsoftexcel.txt b/fragments/labels/microsoftexcel.txt
new file mode 100644
index 0000000..223e912
--- /dev/null
+++ b/fragments/labels/microsoftexcel.txt
@@ -0,0 +1,11 @@
+
+microsoftexcel)
+ name="Microsoft Excel"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=525135"
+ #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"
+ updateToolArguments=( --install --apps XCEL2019 )
+ ;;
diff --git a/fragments/labels/microsoftlicenseremovaltool.txt b/fragments/labels/microsoftlicenseremovaltool.txt
new file mode 100644
index 0000000..b3cc45c
--- /dev/null
+++ b/fragments/labels/microsoftlicenseremovaltool.txt
@@ -0,0 +1,10 @@
+
+microsoftlicenseremovaltool)
+ # credit: Isaac Ordonez (@isaac) macadmins slack
+ name="Microsoft License Removal Tool"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=849815"
+ expectedTeamID="QGS93ZLCU7"
+ appNewVersion=$(curl -is "$downloadURL" | grep ocation: | grep -o "Microsoft_.*pkg" | cut -d "_" -f 5 | cut -d "." -f1-2)
+ Company="Microsoft"
+ ;;
diff --git a/fragments/labels/microsoftoffice365.txt b/fragments/labels/microsoftoffice365.txt
new file mode 100644
index 0000000..1f7d788
--- /dev/null
+++ b/fragments/labels/microsoftoffice365.txt
@@ -0,0 +1,14 @@
+
+microsoftoffice365)
+ name="MicrosoftOffice365"
+ type="pkg"
+ packageID="com.microsoft.pkg.licensing"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=525133"
+ appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3)
+ expectedTeamID="UBF8T346G9"
+ # using MS PowerPoint as the 'stand-in' for the entire suite
+ #appName="Microsoft PowerPoint.app"
+ 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"
+ updateToolArguments=( --install )
+ ;;
diff --git a/fragments/labels/microsoftofficebusinesspro.txt b/fragments/labels/microsoftofficebusinesspro.txt
new file mode 100644
index 0000000..3e002a6
--- /dev/null
+++ b/fragments/labels/microsoftofficebusinesspro.txt
@@ -0,0 +1,12 @@
+
+microsoftofficebusinesspro)
+ name="MicrosoftOfficeBusinessPro"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=2009112"
+ expectedTeamID="UBF8T346G9"
+ # using MS PowerPoint as the 'stand-in' for the entire suite
+ appName="Microsoft PowerPoint.app"
+ 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"
+ updateToolArguments=( --install )
+ ;;
diff --git a/fragments/labels/microsoftonedrive.txt b/fragments/labels/microsoftonedrive.txt
new file mode 100644
index 0000000..33bbdec
--- /dev/null
+++ b/fragments/labels/microsoftonedrive.txt
@@ -0,0 +1,11 @@
+
+microsoftonedrive)
+ name="OneDrive"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=823060"
+ #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"
+ updateToolArguments=( --install --apps ONDR18 )
+ ;;
diff --git a/fragments/labels/microsoftonenote.txt b/fragments/labels/microsoftonenote.txt
new file mode 100644
index 0000000..45c6e12
--- /dev/null
+++ b/fragments/labels/microsoftonenote.txt
@@ -0,0 +1,11 @@
+
+microsoftonenote)
+ name="Microsoft OneNote"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=820886"
+ #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"
+ updateToolArguments=( --install --apps ONMC2019 )
+ ;;
diff --git a/fragments/labels/microsoftoutlook.txt b/fragments/labels/microsoftoutlook.txt
new file mode 100644
index 0000000..76083a4
--- /dev/null
+++ b/fragments/labels/microsoftoutlook.txt
@@ -0,0 +1,11 @@
+
+microsoftoutlook)
+ name="Microsoft Outlook"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=525137"
+ #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"
+ updateToolArguments=( --install --apps OPIM2019 )
+ ;;
diff --git a/fragments/labels/microsoftpowerpoint.txt b/fragments/labels/microsoftpowerpoint.txt
new file mode 100644
index 0000000..5172223
--- /dev/null
+++ b/fragments/labels/microsoftpowerpoint.txt
@@ -0,0 +1,11 @@
+
+microsoftpowerpoint)
+ name="Microsoft PowerPoint"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=525136"
+ #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"
+ updateToolArguments=( --install --apps PPT32019 )
+ ;;
diff --git a/fragments/labels/microsoftremotedesktop.txt b/fragments/labels/microsoftremotedesktop.txt
new file mode 100644
index 0000000..d41304c
--- /dev/null
+++ b/fragments/labels/microsoftremotedesktop.txt
@@ -0,0 +1,11 @@
+
+microsoftremotedesktop)
+ name="Microsoft Remote Desktop"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=868963"
+ #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"
+ updateToolArguments=( --install --apps MSRD10 )
+ ;;
diff --git a/fragments/labels/microsoftsharepointplugin.txt b/fragments/labels/microsoftsharepointplugin.txt
new file mode 100644
index 0000000..a0156d4
--- /dev/null
+++ b/fragments/labels/microsoftsharepointplugin.txt
@@ -0,0 +1,10 @@
+
+microsoftsharepointplugin)
+ # Microsoft has marked this "oldpackage", should probably not be used anymore
+ name="MicrosoftSharePointPlugin"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=800050"
+ #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/oldpackage[id="com.microsoft.sharepointplugin.standalone"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/')
+ expectedTeamID="UBF8T346G9"
+ # TODO: determine blockingProcesses for SharePointPlugin
+ ;;
diff --git a/fragments/labels/microsoftskypeforbusiness.txt b/fragments/labels/microsoftskypeforbusiness.txt
new file mode 100644
index 0000000..3924c70
--- /dev/null
+++ b/fragments/labels/microsoftskypeforbusiness.txt
@@ -0,0 +1,11 @@
+
+microsoftskypeforbusiness)
+ name="Skype for Business"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=832978"
+ #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"
+ updateToolArguments=( --install --apps MSFB16 )
+ ;;
diff --git a/fragments/labels/microsoftteams.txt b/fragments/labels/microsoftteams.txt
new file mode 100644
index 0000000..0aad5c5
--- /dev/null
+++ b/fragments/labels/microsoftteams.txt
@@ -0,0 +1,14 @@
+
+microsoftteams)
+ name="Microsoft Teams"
+ type="pkg"
+ #packageID="com.microsoft.teams"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=869428"
+ #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/([0-9.]*) .*/\1/')
+ # Still using macadmin.software for version, as the path does not contain the version in a matching format. packageID can be used, but version is the same.
+ expectedTeamID="UBF8T346G9"
+ blockingProcesses=( Teams "Microsoft Teams Helper" )
+ # Commenting out msupdate as it is not really supported *yet* for teams
+ # updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
+ # updateToolArguments=( --install --apps TEAM01 )
+ ;;
diff --git a/fragments/labels/microsoftvisualstudiocode.txt b/fragments/labels/microsoftvisualstudiocode.txt
new file mode 100644
index 0000000..c7c0b24
--- /dev/null
+++ b/fragments/labels/microsoftvisualstudiocode.txt
@@ -0,0 +1,12 @@
+
+microsoftvisualstudiocode|\
+visualstudiocode)
+ name="Visual Studio Code"
+ type="zip"
+ #downloadURL="https://go.microsoft.com/fwlink/?LinkID=620882" # Intel only
+ downloadURL="https://go.microsoft.com/fwlink/?LinkID=2156837" # Universal
+ appNewVersion=$(curl -fsL "https://code.visualstudio.com/Updates" | grep "/darwin" | grep -oiE ".com/([^>]+)([^<]+)/darwin" | cut -d "/" -f 2 | sed $'s/[^[:print:] ]//g' | head -1 )
+ expectedTeamID="UBF8T346G9"
+ appName="Visual Studio Code.app"
+ blockingProcesses=( Code )
+ ;;
diff --git a/fragments/labels/microsoftword.txt b/fragments/labels/microsoftword.txt
new file mode 100644
index 0000000..2021cd4
--- /dev/null
+++ b/fragments/labels/microsoftword.txt
@@ -0,0 +1,11 @@
+
+microsoftword)
+ name="Microsoft Word"
+ type="pkg"
+ downloadURL="https://go.microsoft.com/fwlink/?linkid=525134"
+ #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"
+ updateToolArguments=( --install --apps MSWD2019 )
+ ;;
diff --git a/fragments/labels/microsoftyammer.txt b/fragments/labels/microsoftyammer.txt
new file mode 100644
index 0000000..b9b88eb
--- /dev/null
+++ b/fragments/labels/microsoftyammer.txt
@@ -0,0 +1,11 @@
+
+microsoftyammer)
+ name="Yammer"
+ type="dmg"
+ downloadURL="https://aka.ms/yammer_desktop_mac"
+ #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/oldpackage[id="com.microsoft.yammer.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"
+ #updateToolArguments=( --install --apps ?????? )
+ ;;
diff --git a/fragments/labels/miro.txt b/fragments/labels/miro.txt
new file mode 100644
index 0000000..3b8f4bd
--- /dev/null
+++ b/fragments/labels/miro.txt
@@ -0,0 +1,8 @@
+
+miro)
+ # credit: @matins
+ name="Miro"
+ type="dmg"
+ downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
+ expectedTeamID="M3GM7MFY7U"
+ ;;
diff --git a/fragments/labels/musescore.txt b/fragments/labels/musescore.txt
new file mode 100644
index 0000000..fabe5d2
--- /dev/null
+++ b/fragments/labels/musescore.txt
@@ -0,0 +1,8 @@
+
+musescore)
+ name="MuseScore 3"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit musescore MuseScore)
+ appNewVersion=$(versionFromGit musescore MuseScore)
+ expectedTeamID="6EPAF2X3PR"
+ ;;
diff --git a/fragments/labels/netnewswire.txt b/fragments/labels/netnewswire.txt
new file mode 100644
index 0000000..bad7118
--- /dev/null
+++ b/fragments/labels/netnewswire.txt
@@ -0,0 +1,9 @@
+
+netnewswire)
+ name="NetNewsWire"
+ type="zip"
+ downloadURL=$(curl -fs https://ranchero.com/downloads/netnewswire-release.xml \
+ | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$(curl -fs https://ranchero.com/downloads/netnewswire-release.xml | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2)
+ expectedTeamID="M8L2WTLA8W"
+ ;;
diff --git a/fragments/labels/nextcloud.txt b/fragments/labels/nextcloud.txt
new file mode 100644
index 0000000..c9a8a03
--- /dev/null
+++ b/fragments/labels/nextcloud.txt
@@ -0,0 +1,13 @@
+
+nextcloud)
+ name="nextcloud"
+ type="pkg"
+ #packageID="com.nextcloud.desktopclient"
+ downloadURL=$(downloadURLFromGit nextcloud desktop)
+ appNewVersion=$(versionFromGit nextcloud desktop)
+ # The version of the app is not equal to the version listed on GitHub.
+ # App version something like "3.1.3git (build 4850)" but web page lists as "3.1.3"
+ # Also it does not math packageID version "3.1.34850"
+ appCustomVersion(){defaults read /Applications/nextcloud.app/Contents/Info.plist CFBundleShortVersionString | sed -E 's/^([0-9.]*)git.*/\1/g'}
+ expectedTeamID="NKUJUXUJ3B"
+ ;;
diff --git a/fragments/labels/nomad.txt b/fragments/labels/nomad.txt
new file mode 100644
index 0000000..729fa37
--- /dev/null
+++ b/fragments/labels/nomad.txt
@@ -0,0 +1,9 @@
+
+nomad)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="NoMAD"
+ type="pkg"
+ downloadURL="https://files.nomad.menu/NoMAD.pkg"
+ appNewVersion=$(curl -fs https://nomad.menu/support/ | grep "NoMAD Downloads" | sed -E 's/.*Current Version ([0-9\.]*)<.*/\1/g')
+ expectedTeamID="VRPY9KHGX6"
+ ;;
diff --git a/fragments/labels/nomadlogin.txt b/fragments/labels/nomadlogin.txt
new file mode 100644
index 0000000..bb61ccc
--- /dev/null
+++ b/fragments/labels/nomadlogin.txt
@@ -0,0 +1,9 @@
+
+nomadlogin)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="NoMAD Login"
+ type="pkg"
+ downloadURL="https://files.nomad.menu/NoMAD-Login-AD.pkg"
+ appNewVersion=$(curl -fs https://nomad.menu/support/ | grep "NoMAD Login AD Downloads" | sed -E 's/.*Current Version ([0-9\.]*)<.*/\1/g')
+ expectedTeamID="AAPZK3CB24"
+ ;;
diff --git a/fragments/labels/notion.txt b/fragments/labels/notion.txt
new file mode 100644
index 0000000..91c905a
--- /dev/null
+++ b/fragments/labels/notion.txt
@@ -0,0 +1,14 @@
+
+notion)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Notion"
+ type="dmg"
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL="https://www.notion.so/desktop/apple-silicon/download"
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL="https://www.notion.so/desktop/mac/download"
+ fi
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '
+' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="LBQJ96FQ8D"
+ ;;
diff --git a/fragments/labels/nvivo.txt b/fragments/labels/nvivo.txt
new file mode 100644
index 0000000..997af58
--- /dev/null
+++ b/fragments/labels/nvivo.txt
@@ -0,0 +1,10 @@
+
+nvivo)
+ name="NVivo"
+ type="dmg"
+ downloadURL="https://download.qsrinternational.com/Software/NVivoforMac/NVivo.dmg"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr '/' '
+' | grep "[0-9]" | cut -d "." -f1-3 )
+ expectedTeamID="A66L57342X"
+ blockingProcesses=( NVivo NVivoHelper )
+ ;;
diff --git a/fragments/labels/obs.txt b/fragments/labels/obs.txt
new file mode 100644
index 0000000..07cef83
--- /dev/null
+++ b/fragments/labels/obs.txt
@@ -0,0 +1,8 @@
+
+obs)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="OBS"
+ type="dmg"
+ downloadURL=$(curl -fs "https://obsproject.com/download" | awk -F '"' "/dmg/ {print \$10}")
+ expectedTeamID="2MMRE5MTB8"
+ ;;
diff --git a/fragments/labels/obsidian.txt b/fragments/labels/obsidian.txt
new file mode 100644
index 0000000..0f82480
--- /dev/null
+++ b/fragments/labels/obsidian.txt
@@ -0,0 +1,9 @@
+
+obsidian)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Obsidian"
+ type="dmg"
+ downloadURL=$( downloadURLFromGit obsidianmd obsidian-releases )
+ appNewVersion=$(versionFromGit obsidianmd obsidian-releases)
+ expectedTeamID="6JSW4SJWN9"
+ ;;
diff --git a/fragments/labels/odrive.txt b/fragments/labels/odrive.txt
new file mode 100644
index 0000000..b2aa925
--- /dev/null
+++ b/fragments/labels/odrive.txt
@@ -0,0 +1,10 @@
+
+odrive)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="odrive"
+ type="pkg"
+ packageID="com.oxygen.odrive.installer-prod.pkg"
+ # https://docs.odrive.com/docs/odrive-usage-guide#install-desktop-sync
+ downloadURL="https://www.odrive.com/downloaddesktop?platform=mac"
+ expectedTeamID="N887K88VYZ"
+ ;;
diff --git a/fragments/labels/omnidisksweeper.txt b/fragments/labels/omnidisksweeper.txt
new file mode 100644
index 0000000..6492caa
--- /dev/null
+++ b/fragments/labels/omnidisksweeper.txt
@@ -0,0 +1,8 @@
+
+omnidisksweeper)
+ name="OmniDiskSweeper"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniDiskSweeper" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omnifocus3.txt b/fragments/labels/omnifocus3.txt
new file mode 100644
index 0000000..2bfdde2
--- /dev/null
+++ b/fragments/labels/omnifocus3.txt
@@ -0,0 +1,8 @@
+
+omnifocus3)
+ name="OmniFocus"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniFocus3" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omnigraffle6.txt b/fragments/labels/omnigraffle6.txt
new file mode 100644
index 0000000..0033fdd
--- /dev/null
+++ b/fragments/labels/omnigraffle6.txt
@@ -0,0 +1,8 @@
+
+omnigraffle6)
+ name="OmniGraffle"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniGraffle6" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omnigraffle7.txt b/fragments/labels/omnigraffle7.txt
new file mode 100644
index 0000000..e9e89ee
--- /dev/null
+++ b/fragments/labels/omnigraffle7.txt
@@ -0,0 +1,8 @@
+
+omnigraffle7)
+ name="OmniGraffle"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniGraffle7" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omnioutliner5.txt b/fragments/labels/omnioutliner5.txt
new file mode 100644
index 0000000..20047c0
--- /dev/null
+++ b/fragments/labels/omnioutliner5.txt
@@ -0,0 +1,8 @@
+
+omnioutliner5)
+ name="OmniOutliner"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniOutliner5" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omniplan3.txt b/fragments/labels/omniplan3.txt
new file mode 100644
index 0000000..bf9bffd
--- /dev/null
+++ b/fragments/labels/omniplan3.txt
@@ -0,0 +1,8 @@
+
+omniplan3)
+ name="OmniPlan"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniPlan3" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omniplan4.txt b/fragments/labels/omniplan4.txt
new file mode 100644
index 0000000..ecb4181
--- /dev/null
+++ b/fragments/labels/omniplan4.txt
@@ -0,0 +1,8 @@
+
+omniplan4)
+ name="OmniPlan"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniPlan4" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/omnipresence.txt b/fragments/labels/omnipresence.txt
new file mode 100644
index 0000000..9e7ae83
--- /dev/null
+++ b/fragments/labels/omnipresence.txt
@@ -0,0 +1,8 @@
+
+omnipresence)
+ name="OmniPresence"
+ type="dmg"
+ downloadURL=$(curl -fs "https://update.omnigroup.com/appcast/com.omnigroup.OmniPresence" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34YW5XSRB7"
+ ;;
diff --git a/fragments/labels/onionshare.txt b/fragments/labels/onionshare.txt
new file mode 100644
index 0000000..9fee21f
--- /dev/null
+++ b/fragments/labels/onionshare.txt
@@ -0,0 +1,10 @@
+
+onionshare)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="OnionShare"
+ type="dmg"
+ downloadURL="https://onionshare.org$(curl -fs https://onionshare.org | grep "button.*dmg" | tr '"' '
+' | grep ".dmg")"
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="N9B95FDWH4"
+ ;;
diff --git a/fragments/labels/onlyofficedesktop.txt b/fragments/labels/onlyofficedesktop.txt
new file mode 100644
index 0000000..442506c
--- /dev/null
+++ b/fragments/labels/onlyofficedesktop.txt
@@ -0,0 +1,7 @@
+
+onlyofficedesktop)
+ name="ONLYOFFICE"
+ type="dmg"
+ downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/distrib/onlyoffice/ONLYOFFICE.dmg"
+ expectedTeamID="2WH24U26GJ"
+ ;;
diff --git a/fragments/labels/openvpnconnect.txt b/fragments/labels/openvpnconnect.txt
new file mode 100644
index 0000000..708a2dd
--- /dev/null
+++ b/fragments/labels/openvpnconnect.txt
@@ -0,0 +1,9 @@
+
+openvpnconnect)
+ # credit: Erik Stam (@erikstam)
+ name="OpenVPN"
+ type="pkgInDmg"
+ pkgName="OpenVPN_Connect_Installer_signed.pkg"
+ downloadURL="https://openvpn.net/downloads/openvpn-connect-v2-macos.dmg"
+ expectedTeamID="ACV7L3WCD8"
+ ;;
diff --git a/fragments/labels/openvpnconnectv3.txt b/fragments/labels/openvpnconnectv3.txt
new file mode 100644
index 0000000..42acb2f
--- /dev/null
+++ b/fragments/labels/openvpnconnectv3.txt
@@ -0,0 +1,8 @@
+
+openvpnconnectv3)
+ # credit: @lotnix
+ name="OpenVPN Connect"
+ type="pkgInDmg"
+ downloadURL="https://openvpn.net/downloads/openvpn-connect-v3-macos.dmg"
+ expectedTeamID="ACV7L3WCD8"
+ ;;
diff --git a/fragments/labels/opera.txt b/fragments/labels/opera.txt
new file mode 100644
index 0000000..a65d310
--- /dev/null
+++ b/fragments/labels/opera.txt
@@ -0,0 +1,10 @@
+
+opera)
+ name="Opera"
+ type="dmg"
+ downloadURL=$(curl -fsIL "$(curl -fs "$(curl -fsIL "https://download.opera.com/download/get/?partner=www&opsys=MacOS" | grep -i "^location" | cut -d " " -f2 | tail -1 | tr -d '
')" | grep download.opera.com | grep -io "https.*yes" | sed 's/\&/\&/g')" | grep -i "^location" | cut -d " " -f2 | tr -d '
')
+ appNewVersion="$(curl -fs "https://get.geo.opera.com/ftp/pub/opera/desktop/" | grep "href=\"\d" | sort -V | tail -1 | tr '"' '
+' | grep "/" | head -1 | tr -d '/')"
+ versionKey="CFBundleVersion"
+ expectedTeamID="A2P9LX4JPN"
+ ;;
diff --git a/fragments/labels/pacifist.txt b/fragments/labels/pacifist.txt
new file mode 100644
index 0000000..3eb933c
--- /dev/null
+++ b/fragments/labels/pacifist.txt
@@ -0,0 +1,7 @@
+
+pacifist)
+ name="Pacifist"
+ type="dmg"
+ downloadURL="https://charlessoft.com/cgi-bin/pacifist_download.cgi?type=dmg"
+ expectedTeamID="HRLUCP7QP4"
+ ;;
diff --git a/fragments/labels/pdfsam.txt b/fragments/labels/pdfsam.txt
new file mode 100644
index 0000000..fcd8274
--- /dev/null
+++ b/fragments/labels/pdfsam.txt
@@ -0,0 +1,8 @@
+
+pdfsam)
+ name="PDFsam Basic"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit torakiki pdfsam)
+ appNewVersion=$(versionFromGit torakiki pdfsam)
+ expectedTeamID="8XM3GHX436"
+ ;;
diff --git a/fragments/labels/pitch.txt b/fragments/labels/pitch.txt
new file mode 100644
index 0000000..3a7b6cf
--- /dev/null
+++ b/fragments/labels/pitch.txt
@@ -0,0 +1,7 @@
+
+pitch)
+ name="Pitch"
+ type="dmg"
+ downloadURL="https://desktop.pitch.com/mac/Pitch.dmg"
+ expectedTeamID="KUCN8NUU6Z"
+ ;;
diff --git a/fragments/labels/plantronicshub.txt b/fragments/labels/plantronicshub.txt
new file mode 100644
index 0000000..e7f5de2
--- /dev/null
+++ b/fragments/labels/plantronicshub.txt
@@ -0,0 +1,8 @@
+
+plantronicshub)
+ name="Plantronics Hub"
+ type="pkgInDmg"
+ downloadURL="https://www.poly.com/content/dam/www/software/PlantronicsHubInstaller.dmg"
+ expectedTeamID="SKWK2Q7JJV"
+ appNewVersion=$(curl -fs "https://www.poly.com/in/en/support/knowledge-base/kb-article-page?lang=en_US&urlName=Hub-Release-Notes&type=Product_Information__kav" | grep -o "(*.*)" | head -1 | cut -d "(" -f2 | sed 's/\<\/span\>//g' | cut -d "<" -f1)
+ ;;
diff --git a/fragments/labels/plisteditpro.txt b/fragments/labels/plisteditpro.txt
new file mode 100644
index 0000000..3d21b41
--- /dev/null
+++ b/fragments/labels/plisteditpro.txt
@@ -0,0 +1,7 @@
+
+plisteditpro)
+ name="PlistEdit Pro"
+ type="zip"
+ downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip"
+ expectedTeamID="8NQ43ND65V"
+ ;;
diff --git a/fragments/labels/postman.txt b/fragments/labels/postman.txt
new file mode 100644
index 0000000..8dbc5d6
--- /dev/null
+++ b/fragments/labels/postman.txt
@@ -0,0 +1,9 @@
+
+postman)
+ # credit: Mischa van der Bent
+ name="Postman"
+ type="zip"
+ downloadURL="https://dl.pstmn.io/download/latest/osx"
+ appNewVersion=$(curl -Ifs https://dl.pstmn.io/download/latest/osx | grep "content-disposition:" | sed -n -e 's/^.*Postman-osx-//p' | sed 's/\.zip//' | sed $'s/[^[:print:] ]//g' )
+ expectedTeamID="H7H8Q7M5CK"
+ ;;
diff --git a/fragments/labels/prism9.txt b/fragments/labels/prism9.txt
new file mode 100644
index 0000000..b46c4e4
--- /dev/null
+++ b/fragments/labels/prism9.txt
@@ -0,0 +1,8 @@
+
+prism9)
+ name="Prism 9"
+ type="dmg"
+ downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg"
+ expectedTeamID="YQ2D36NS9M"
+ Company="GraphPad Software"
+ ;;
diff --git a/fragments/labels/privileges.txt b/fragments/labels/privileges.txt
new file mode 100644
index 0000000..0685d6c
--- /dev/null
+++ b/fragments/labels/privileges.txt
@@ -0,0 +1,9 @@
+
+privileges)
+ # credit: Erik Stam (@erikstam)
+ name="Privileges"
+ type="zip"
+ downloadURL=$(downloadURLFromGit sap macOS-enterprise-privileges )
+ appNewVersion=$(versionFromGit sap macOS-enterprise-privileges )
+ expectedTeamID="7R5ZEU67FQ"
+ ;;
diff --git a/fragments/labels/proctortrack.txt b/fragments/labels/proctortrack.txt
new file mode 100644
index 0000000..4d6144e
--- /dev/null
+++ b/fragments/labels/proctortrack.txt
@@ -0,0 +1,8 @@
+
+proctortrack)
+ #credit: Jeff F. (@jefff on MacAdmins Slack)
+ name="Proctortrack"
+ type="zip"
+ downloadURL="https://storage.googleapis.com/verificientstatic/ProctortrackApp/Production/Proctortrack.zip"
+ expectedTeamID="SNHZD6TJE6"
+ ;;
diff --git a/fragments/labels/promiseutilityr.txt b/fragments/labels/promiseutilityr.txt
new file mode 100644
index 0000000..1b59a9a
--- /dev/null
+++ b/fragments/labels/promiseutilityr.txt
@@ -0,0 +1,8 @@
+
+promiseutilityr)
+ name="Promise Utility"
+ type="pkgInDmg"
+ packageID="com.promise.utilinstaller"
+ downloadURL="https://www.promise.com/DownloadFile.aspx?DownloadFileUID=6533"
+ expectedTeamID="268CCUR4WN"
+ ;;
diff --git a/fragments/labels/proxyman.txt b/fragments/labels/proxyman.txt
new file mode 100644
index 0000000..f42ae36
--- /dev/null
+++ b/fragments/labels/proxyman.txt
@@ -0,0 +1,14 @@
+
+proxyman)
+ name="Proxyman"
+ type="dmg"
+ downloadURL="https://proxyman.io/release/osx/Proxyman_latest.dmg"
+ expectedTeamID="3X57WP8E8V"
+ appNewVersion=$(curl -s -L https://github.com/ProxymanApp/Proxyman | grep -o 'releases/tag/.*\>' | awk -F '/' '{print $3}')
+ ;;
+pymol)
+ name="PyMOL"
+ type="dmg"
+ downloadURL=$(curl -s -L "https://pymol.org/" | grep -m 1 -Eio 'href="https://pymol.org/installers/PyMOL-(.*)-MacOS(.*).dmg"' | cut -c7- | sed -e 's/"$//')
+ expectedTeamID="26SDDJ756N"
+ ;;
diff --git a/fragments/labels/r.txt b/fragments/labels/r.txt
new file mode 100644
index 0000000..1290ae3
--- /dev/null
+++ b/fragments/labels/r.txt
@@ -0,0 +1,9 @@
+
+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')
+ expectedTeamID="VZLD955F6P"
+ ;;
diff --git a/fragments/labels/ramboxce.txt b/fragments/labels/ramboxce.txt
new file mode 100644
index 0000000..017b14e
--- /dev/null
+++ b/fragments/labels/ramboxce.txt
@@ -0,0 +1,8 @@
+
+ramboxce)
+ name="Rambox"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit ramboxapp community-edition )
+ appNewVersion=$(versionFromGit ramboxapp community-edition )
+ expectedTeamID="7F292FPD69"
+ ;;
diff --git a/fragments/labels/rectangle.txt b/fragments/labels/rectangle.txt
new file mode 100644
index 0000000..6407701
--- /dev/null
+++ b/fragments/labels/rectangle.txt
@@ -0,0 +1,8 @@
+
+rectangle)
+ name="Rectangle"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit rxhanson Rectangle)
+ appNewVersion=$(versionFromGit rxhanson Rectangle)
+ expectedTeamID="XSYZ3E4B7D"
+ ;;
diff --git a/fragments/labels/redeye.txt b/fragments/labels/redeye.txt
new file mode 100644
index 0000000..46337b5
--- /dev/null
+++ b/fragments/labels/redeye.txt
@@ -0,0 +1,9 @@
+
+redeye)
+ # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
+ name="Red Eye"
+ type="zip"
+ downloadURL="https://www.hexedbits.com/downloads/redeye.zip"
+ appNewVersion=$( curl -fs "https://www.hexedbits.com/redeye/" | grep "Latest version" | sed -E 's/.*Latest version ([0-9.]*),.*/\1/g' )
+ expectedTeamID="5VRJU68BZ5"
+ ;;
diff --git a/fragments/labels/resiliosynchome.txt b/fragments/labels/resiliosynchome.txt
new file mode 100644
index 0000000..0a9c7d1
--- /dev/null
+++ b/fragments/labels/resiliosynchome.txt
@@ -0,0 +1,7 @@
+
+resiliosynchome)
+ name="Resilio Sync"
+ type="dmg"
+ downloadURL="https://download-cdn.resilio.com/stable/osx/Resilio-Sync.dmg"
+ expectedTeamID="2953Z5SZSK"
+ ;;
diff --git a/fragments/labels/retrobatch.txt b/fragments/labels/retrobatch.txt
new file mode 100644
index 0000000..e73bcff
--- /dev/null
+++ b/fragments/labels/retrobatch.txt
@@ -0,0 +1,8 @@
+
+retrobatch)
+ name="Retrobatch"
+ type="zip"
+ downloadURL="https://flyingmeat.com/download/Retrobatch.zip"
+ appNewVersion=$(curl -fs "https://flyingmeat.com/retrobatch/" | grep -i download | grep -i zip | grep -iv Documentation | sed -E 's/.*Download.*href.*https.*zip.*Retrobatch ([0-9.]*)<.*/\1/g')
+ expectedTeamID="WZCN9HJ4VP"
+ ;;
diff --git a/fragments/labels/ricohpsprinters.txt b/fragments/labels/ricohpsprinters.txt
new file mode 100644
index 0000000..359425b
--- /dev/null
+++ b/fragments/labels/ricohpsprinters.txt
@@ -0,0 +1,8 @@
+
+ricohpsprinters)
+ name="Ricoh Printers"
+ type="pkgInDmg"
+ packageID="com.RICOH.print.PS_Printers_Vol4_EXP.ppds.pkg"
+ downloadURL=$(curl -fs https://support.ricoh.com//bb/html/dr_ut_e/rc3/model/mpc3004ex/mpc3004exen.htm | xmllint --html --format - 2>/dev/null | grep -m 1 -o "https://.*.dmg" | cut -d '"' -f 1)
+ expectedTeamID="5KACUT3YX8"
+ ;;
diff --git a/fragments/labels/ringcentralapp.txt b/fragments/labels/ringcentralapp.txt
new file mode 100644
index 0000000..623e9d3
--- /dev/null
+++ b/fragments/labels/ringcentralapp.txt
@@ -0,0 +1,9 @@
+
+ringcentralapp)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Glip"
+ type="dmg"
+ downloadURL="https://downloads.ringcentral.com/glip/rc/GlipForMac"
+ expectedTeamID="M932RC5J66"
+ blockingProcesses=( "Glip" )
+ ;;
diff --git a/fragments/labels/ringcentralclassicapp.txt b/fragments/labels/ringcentralclassicapp.txt
new file mode 100644
index 0000000..5bc4186
--- /dev/null
+++ b/fragments/labels/ringcentralclassicapp.txt
@@ -0,0 +1,9 @@
+
+ringcentralclassicapp)
+ name="Glip"
+ type="dmg"
+ downloadURL="https://downloads.ringcentral.com/glip/rc/GlipForMac"
+ expectedTeamID="M932RC5J66"
+ blockingProcesses=( "Glip" )
+ #blockingProcessesMaxCPU="5"
+ ;;
diff --git a/fragments/labels/ringcentralmeetings.txt b/fragments/labels/ringcentralmeetings.txt
new file mode 100644
index 0000000..15fc024
--- /dev/null
+++ b/fragments/labels/ringcentralmeetings.txt
@@ -0,0 +1,9 @@
+
+ringcentralmeetings)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Ring Central Meetings"
+ type="pkg"
+ downloadURL="http://dn.ringcentral.com/data/web/download/RCMeetings/1210/RCMeetingsClientSetup.pkg"
+ expectedTeamID="M932RC5J66"
+ blockingProcesses=( "RingCentral Meetings" )
+ ;;
diff --git a/fragments/labels/ringcentralphone.txt b/fragments/labels/ringcentralphone.txt
new file mode 100644
index 0000000..21e32b6
--- /dev/null
+++ b/fragments/labels/ringcentralphone.txt
@@ -0,0 +1,9 @@
+
+ringcentralphone)
+ # credit: Eric Gjerde, When I Work (@ericgjerde)
+ name="RingCentral for Mac"
+ type="dmg"
+ downloadURL="https://downloads.ringcentral.com/sp/RingCentralForMac"
+ expectedTeamID="M932RC5J66"
+ blockingProcesses=( "RingCentral Phone" )
+ ;;
diff --git a/fragments/labels/rocket.txt b/fragments/labels/rocket.txt
new file mode 100644
index 0000000..4f66398
--- /dev/null
+++ b/fragments/labels/rocket.txt
@@ -0,0 +1,7 @@
+
+rocket)
+ name="Rocket"
+ type="dmg"
+ downloadURL="https://macrelease.matthewpalmer.net/Rocket.dmg"
+ expectedTeamID="Z4JV2M65MH"
+ ;;
diff --git a/fragments/labels/rocketchat.txt b/fragments/labels/rocketchat.txt
new file mode 100644
index 0000000..05a0eba
--- /dev/null
+++ b/fragments/labels/rocketchat.txt
@@ -0,0 +1,9 @@
+
+rocketchat)
+ name="Rocket.Chat"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit RocketChat Rocket.Chat.Electron)
+ appNewVersion=$(versionFromGit RocketChat Rocket.Chat.Electron)
+ expectedTeamID="S6UPZG7ZR3"
+ blockingProcesses=( Rocket.Chat )
+ ;;
diff --git a/fragments/labels/royaltsx.txt b/fragments/labels/royaltsx.txt
new file mode 100644
index 0000000..577af48
--- /dev/null
+++ b/fragments/labels/royaltsx.txt
@@ -0,0 +1,8 @@
+
+royaltsx)
+ name="Royal TSX"
+ type="dmg"
+ downloadURL=$(curl -fs https://royaltsx-v4.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$(curl -fs https://royaltsx-v4.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2)
+ expectedTeamID="VXP8K9EDP6"
+ ;;
diff --git a/fragments/labels/rstudio.txt b/fragments/labels/rstudio.txt
new file mode 100644
index 0000000..d9f9dc8
--- /dev/null
+++ b/fragments/labels/rstudio.txt
@@ -0,0 +1,8 @@
+
+rstudio)
+ name="RStudio"
+ type="dmg"
+ downloadURL=$(curl -s -L "https://rstudio.com/products/rstudio/download/" | grep -m 1 -Eio 'href="https://download1.rstudio.org/desktop/macos/RStudio-(.*).dmg"' | cut -c7- | sed -e 's/"$//')
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="FYF2F5GFX4"
+ ;;
diff --git a/fragments/labels/santa.txt b/fragments/labels/santa.txt
new file mode 100644
index 0000000..7ff28c3
--- /dev/null
+++ b/fragments/labels/santa.txt
@@ -0,0 +1,10 @@
+
+santa)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="Santa"
+ type="pkgInDmg"
+ packageID="com.google.santa"
+ downloadURL=$(downloadURLFromGit google santa)
+ appNewVersion=$(versionFromGit google santa)
+ expectedTeamID="EQHXZ8M8AV"
+ ;;
diff --git a/fragments/labels/screamingfrogseospider.txt b/fragments/labels/screamingfrogseospider.txt
new file mode 100644
index 0000000..77cd4ec
--- /dev/null
+++ b/fragments/labels/screamingfrogseospider.txt
@@ -0,0 +1,7 @@
+
+screamingfrogseospider)
+ name="Screaming Frog SEO Spider"
+ type="dmg"
+ downloadURL="https://download.screamingfrog.co.uk/products/seo-spider/ScreamingFrogSEOSpider-14.3.dmg"
+ expectedTeamID="CAHEVC3HZC"
+ ;;
diff --git a/fragments/labels/screenflick.txt b/fragments/labels/screenflick.txt
new file mode 100644
index 0000000..44ed329
--- /dev/null
+++ b/fragments/labels/screenflick.txt
@@ -0,0 +1,8 @@
+
+screenflick)
+ # credit: Gabe Marchan (gabemarchan.com - @darklink87)
+ name="Screenflick"
+ type="zip"
+ downloadURL="https://www.araelium.com/screenflick/downloads/Screenflick.zip"
+ expectedTeamID="28488A87JB"
+ ;;
diff --git a/fragments/labels/sfsymbols.txt b/fragments/labels/sfsymbols.txt
new file mode 100644
index 0000000..cd475dc
--- /dev/null
+++ b/fragments/labels/sfsymbols.txt
@@ -0,0 +1,7 @@
+
+sfsymbols)
+ name="SF Symbols"
+ type="pkgInDmg"
+ downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
+ expectedTeamID="Software Update"
+ ;;
diff --git a/fragments/labels/shield.txt b/fragments/labels/shield.txt
new file mode 100644
index 0000000..317849c
--- /dev/null
+++ b/fragments/labels/shield.txt
@@ -0,0 +1,9 @@
+
+shield)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Shield"
+ type="zip"
+ downloadURL=$(downloadURLFromGit theevilbit Shield)
+ appNewVersion=$(versionFromGit theevilbit Shield)
+ expectedTeamID="33YRLYRBYV"
+ ;;
diff --git a/fragments/labels/sidekick.txt b/fragments/labels/sidekick.txt
new file mode 100644
index 0000000..3093427
--- /dev/null
+++ b/fragments/labels/sidekick.txt
@@ -0,0 +1,8 @@
+
+sidekick)
+ name="Sidekick"
+ type="dmg"
+ downloadURL="https://api.meetsidekick.com/downloads/df/mac"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/.*-x64-([0-9.]*)-.*/\1/g' )
+ expectedTeamID="N975558CUS"
+ ;;
diff --git a/fragments/labels/signal.txt b/fragments/labels/signal.txt
new file mode 100644
index 0000000..23703a4
--- /dev/null
+++ b/fragments/labels/signal.txt
@@ -0,0 +1,9 @@
+
+signal)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Signal"
+ type="dmg"
+ downloadURL=https://updates.signal.org/desktop/$(curl -fs https://updates.signal.org/desktop/latest-mac.yml | awk '/url/ && /dmg/ {print $3}')
+ appNewVersion=$(curl -fs https://updates.signal.org/desktop/latest-mac.yml | grep version | awk '{print $2}')
+ expectedTeamID="U68MSDN6DR"
+ ;;
diff --git a/fragments/labels/silnite.txt b/fragments/labels/silnite.txt
new file mode 100644
index 0000000..9910b85
--- /dev/null
+++ b/fragments/labels/silnite.txt
@@ -0,0 +1,10 @@
+
+silnite)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="silnite"
+ type="pkgInZip"
+ downloadURL=$(curl -fs https://eclecticlight.co/downloads/ | grep -i $name | grep zip | sed -E 's/.*href=\"(https.*)\">.*/\1/g')
+ appNewVersion=$(curl -fs https://eclecticlight.co/downloads/ | grep zip | grep -o -E "silnite [0-9.]*" | awk '{print $2}')
+ expectedTeamID="QWY4LRW926"
+ blockingProcesses=( NONE )
+ ;;
diff --git a/fragments/labels/sirimote.txt b/fragments/labels/sirimote.txt
new file mode 100644
index 0000000..d8cab34
--- /dev/null
+++ b/fragments/labels/sirimote.txt
@@ -0,0 +1,8 @@
+
+sirimote)
+ name="SiriMote"
+ type="zip"
+ downloadURL="http://bit.ly/sirimotezip"
+ #appNewVersion="" # Not found on web page
+ expectedTeamID="G78RJ6NLJU"
+ ;;
diff --git a/fragments/labels/sizeup.txt b/fragments/labels/sizeup.txt
new file mode 100644
index 0000000..17f2539
--- /dev/null
+++ b/fragments/labels/sizeup.txt
@@ -0,0 +1,9 @@
+
+sizeup)
+ # credit: AP Orlebeke (@apizz)
+ name="SizeUp"
+ type="zip"
+ downloadURL="https://www.irradiatedsoftware.com/download/SizeUp.zip"
+ appNewVersion=$(curl -fs https://www.irradiatedsoftware.com/updates/notes/SizeUpReleaseNotes.html | grep Version | sed -E 's/.*Version ([0-9.]*) <.*/\1/')
+ expectedTeamID="GVZ7RF955D"
+ ;;
diff --git a/fragments/labels/sketch.txt b/fragments/labels/sketch.txt
new file mode 100644
index 0000000..95059cb
--- /dev/null
+++ b/fragments/labels/sketch.txt
@@ -0,0 +1,16 @@
+
+sketch)
+ name="Sketch"
+ type="zip"
+ downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g')
+ appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page
+ expectedTeamID="WUGMZZ5K46"
+ ;;
+skype)
+ name="Skype"
+ type="dmg"
+ downloadURL="https://get.skype.com/go/getskype-skypeformac"
+ appNewVersion=$(curl -is "https://get.skype.com/go/getskype-skypeformac" | grep ocation: | grep -o "Skype-.*dmg" | cut -d "-" -f 2 | cut -d "." -f1-2)
+ expectedTeamID="AL798K98FX"
+ Company="Microsoft"
+ ;;
diff --git a/fragments/labels/slack.txt b/fragments/labels/slack.txt
new file mode 100644
index 0000000..ddf9a70
--- /dev/null
+++ b/fragments/labels/slack.txt
@@ -0,0 +1,14 @@
+
+slack)
+ name="Slack"
+ type="dmg"
+ downloadURL="https://slack.com/ssb/download-osx-universal" # Universal
+# if [[ $(arch) == "arm64" ]]; then
+# downloadURL="https://slack.com/ssb/download-osx-silicon"
+# elif [[ $(arch) == "i386" ]]; then
+# downloadURL="https://slack.com/ssb/download-osx"
+# fi
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '
+' | sed -E 's/.*macos\/([0-9.]*)\/.*/\1/g' )
+ expectedTeamID="BQR82RBBHL"
+ ;;
diff --git a/fragments/labels/snagit.txt b/fragments/labels/snagit.txt
new file mode 100644
index 0000000..3ec0c00
--- /dev/null
+++ b/fragments/labels/snagit.txt
@@ -0,0 +1,9 @@
+
+snagit|\
+snagit2021|\
+snagit2020)
+ name="Snagit 2021"
+ type="dmg"
+ downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.dmg"
+ expectedTeamID="7TQL462TU8"
+ ;;
diff --git a/fragments/labels/snapgeneviewer.txt b/fragments/labels/snapgeneviewer.txt
new file mode 100644
index 0000000..d347938
--- /dev/null
+++ b/fragments/labels/snapgeneviewer.txt
@@ -0,0 +1,9 @@
+
+snapgeneviewer)
+ name="SnapGene Viewer"
+ type="dmg"
+ downloadURL="https://www.snapgene.com/local/targets/download.php?variant=viewer&os=mac&majorRelease=latest&minorRelease=latest"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr '/' '
+' | grep -i "dmg" | sed -E 's/[a-zA-Z_]*_([0-9.]*)_mac\.dmg/\1/g' )
+ expectedTeamID="WVCV9Q8Y78"
+ ;;
diff --git a/fragments/labels/sonos.txt b/fragments/labels/sonos.txt
new file mode 100644
index 0000000..b89aef1
--- /dev/null
+++ b/fragments/labels/sonos.txt
@@ -0,0 +1,9 @@
+
+sonos|\
+sonoss1)
+ # credit: Erik Stam (@erikstam)
+ name="Sonos S1 Controller"
+ type="dmg"
+ downloadURL="https://www.sonos.com/redir/controller_software_mac"
+ expectedTeamID="2G4LW83Q3E"
+ ;;
diff --git a/fragments/labels/sonoss2.txt b/fragments/labels/sonoss2.txt
new file mode 100644
index 0000000..36fed85
--- /dev/null
+++ b/fragments/labels/sonoss2.txt
@@ -0,0 +1,7 @@
+
+sonoss2)
+ name="Sonos"
+ type="dmg"
+ downloadURL="https://www.sonos.com/redir/controller_software_mac2"
+ expectedTeamID="2G4LW83Q3E"
+ ;;
diff --git a/fragments/labels/sourcetree.txt b/fragments/labels/sourcetree.txt
new file mode 100644
index 0000000..7c1541e
--- /dev/null
+++ b/fragments/labels/sourcetree.txt
@@ -0,0 +1,9 @@
+
+sourcetree)
+ name="Sourcetree"
+ type="zip"
+ downloadURL=$(curl -fs "https://www.sourcetreeapp.com" | grep -i "macURL" | tr '"' '
+' | grep -io "https://.*/Sourcetree.*\.zip" | tail -1)
+ appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/Sourcetree_([0-9.]*)_[0-9]*\.zip/\1/g')
+ expectedTeamID="UPXU4CQZ5P"
+ ;;
diff --git a/fragments/labels/spotify.txt b/fragments/labels/spotify.txt
new file mode 100644
index 0000000..95aa254
--- /dev/null
+++ b/fragments/labels/spotify.txt
@@ -0,0 +1,8 @@
+
+spotify)
+ name="Spotify"
+ type="dmg"
+ downloadURL="https://download.scdn.co/Spotify.dmg"
+ # appNewVersion=$(curl -fs https://www.spotify.com/us/opensource/ | cat | grep -o ".*. " | head -1 | cut -d ">" -f2 | cut -d "<" -f1) # does not result in the same version as downloaded
+ expectedTeamID="2FNC3A47ZF"
+ ;;
diff --git a/fragments/labels/sublimetext.txt b/fragments/labels/sublimetext.txt
new file mode 100644
index 0000000..e2efaab
--- /dev/null
+++ b/fragments/labels/sublimetext.txt
@@ -0,0 +1,9 @@
+
+sublimetext)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Sublime Text"
+ type="zip"
+ downloadURL="$(curl -fs https://www.sublimetext.com/download | grep -io "https://download.*_mac.zip")"
+ appNewVersion=$(curl -fs https://www.sublimetext.com/download | grep -i -A 4 "id.*changelog" | grep -io "Build [0-9]*")
+ expectedTeamID="Z6D26JE4Y4"
+ ;;
diff --git a/fragments/labels/supportapp.txt b/fragments/labels/supportapp.txt
new file mode 100644
index 0000000..8cc5a4c
--- /dev/null
+++ b/fragments/labels/supportapp.txt
@@ -0,0 +1,10 @@
+
+supportapp)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="Support"
+ type="pkg"
+ packageID="nl.root3.support"
+ downloadURL=$(downloadURLFromGit root3nl SupportApp)
+ appNewVersion=$(versionFromGit root3nl SupportApp)
+ expectedTeamID="98LJ4XBGYK"
+ ;;
diff --git a/fragments/labels/suspiciouspackage.txt b/fragments/labels/suspiciouspackage.txt
new file mode 100644
index 0000000..b879b76
--- /dev/null
+++ b/fragments/labels/suspiciouspackage.txt
@@ -0,0 +1,9 @@
+
+suspiciouspackage)
+ # credit: Mischa van der Bent (@mischavdbent)
+ name="Suspicious Package"
+ type="dmg"
+ downloadURL="https://mothersruin.com/software/downloads/SuspiciousPackage.dmg"
+ addNewVersion=$(curl -fs https://mothersruin.com/software/SuspiciousPackage/get.html | grep 'class="version"' | sed -E 's/.*>([0-9\.]*) \(.*/\1/g')
+ expectedTeamID="936EB786NH"
+ ;;
diff --git a/fragments/labels/swiftruntimeforcommandlinetools.txt b/fragments/labels/swiftruntimeforcommandlinetools.txt
new file mode 100644
index 0000000..6385e95
--- /dev/null
+++ b/fragments/labels/swiftruntimeforcommandlinetools.txt
@@ -0,0 +1,8 @@
+
+swiftruntimeforcommandlinetools)
+ # Note: this installer will error on macOS versions later than 10.14.3
+ name="SwiftRuntimeForCommandLineTools"
+ type="pkgInDmg"
+ downloadURL="https://updates.cdn-apple.com/2019/cert/061-41823-20191025-5efc5a59-d7dc-46d3-9096-396bb8cb4a73/SwiftRuntimeForCommandLineTools.dmg"
+ expectedTeamID="Software Update"
+ ;;
diff --git a/fragments/labels/tableaudesktop.txt b/fragments/labels/tableaudesktop.txt
new file mode 100644
index 0000000..758be64
--- /dev/null
+++ b/fragments/labels/tableaudesktop.txt
@@ -0,0 +1,8 @@
+
+tableaudesktop)
+ name="Tableau Desktop"
+ type="pkgInDmg"
+ packageID="com.tableausoftware.tableaudesktop"
+ downloadURL="https://www.tableau.com/downloads/desktop/mac"
+ expectedTeamID="QJ4XPRK37C"
+ ;;
diff --git a/fragments/labels/tableaureader.txt b/fragments/labels/tableaureader.txt
new file mode 100644
index 0000000..1f85f83
--- /dev/null
+++ b/fragments/labels/tableaureader.txt
@@ -0,0 +1,8 @@
+
+tableaureader)
+ name="Tableau Reader"
+ type="pkgInDmg"
+ packageID="com.tableausoftware.reader.app"
+ downloadURL="https://www.tableau.com/downloads/reader/mac"
+ expectedTeamID="QJ4XPRK37C"
+ ;;
diff --git a/fragments/labels/taskpaper.txt b/fragments/labels/taskpaper.txt
new file mode 100644
index 0000000..53fd589
--- /dev/null
+++ b/fragments/labels/taskpaper.txt
@@ -0,0 +1,8 @@
+
+taskpaper)
+ # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
+ name="TaskPaper"
+ type="dmg"
+ downloadURL="https://www.taskpaper.com/assets/app/TaskPaper.dmg"
+ expectedTeamID="64A5CLJP5W"
+ ;;
diff --git a/fragments/labels/teamviewer.txt b/fragments/labels/teamviewer.txt
new file mode 100644
index 0000000..83850ff
--- /dev/null
+++ b/fragments/labels/teamviewer.txt
@@ -0,0 +1,10 @@
+
+teamviewer)
+ name="TeamViewer"
+ type="pkgInDmg"
+ packageID="com.teamviewer.teamviewer"
+ pkgName="Install TeamViewer.app/Contents/Resources/Install TeamViewer.pkg"
+ downloadURL="https://download.teamviewer.com/download/TeamViewer.dmg"
+ appNewVersion=$(curl -fs "https://www.teamviewer.com/en/download/mac-os/" | grep "Current version" | cut -d " " -f3 | cut -d "<" -f1)
+ expectedTeamID="H7UGFBUGV6"
+ ;;
diff --git a/fragments/labels/teamviewerhost.txt b/fragments/labels/teamviewerhost.txt
new file mode 100644
index 0000000..ac026e7
--- /dev/null
+++ b/fragments/labels/teamviewerhost.txt
@@ -0,0 +1,10 @@
+
+teamviewerhost)
+ name="TeamViewerHost"
+ type="pkgInDmg"
+ packageID="com.teamviewer.teamviewerhost"
+ pkgName="Install TeamViewerHost.app/Contents/Resources/Install TeamViewerHost.pkg" downloadURL="https://download.teamviewer.com/download/TeamViewerHost.dmg"
+ appNewVersion=$(curl -fs "https://www.teamviewer.com/en/download/mac-os/" | grep "Current version" | cut -d " " -f3 | cut -d "<" -f1)
+ expectedTeamID="H7UGFBUGV6"
+ #blockingProcessesMaxCPU="5" # Future feature
+ ;;
diff --git a/fragments/labels/teamviewerqs.txt b/fragments/labels/teamviewerqs.txt
new file mode 100644
index 0000000..451b7e5
--- /dev/null
+++ b/fragments/labels/teamviewerqs.txt
@@ -0,0 +1,10 @@
+
+teamviewerqs)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="TeamViewerQS"
+ type="dmg"
+ downloadURL="https://download.teamviewer.com/download/TeamViewerQS.dmg"
+ appNewVersion=$(curl -fs "https://www.teamviewer.com/en/download/mac-os/" | grep "Current version" | cut -d " " -f3 | cut -d "<" -f1)
+ appName="TeamViewerQS.app"
+ expectedTeamID="H7UGFBUGV6"
+ ;;
diff --git a/fragments/labels/techsmithcapture.txt b/fragments/labels/techsmithcapture.txt
new file mode 100644
index 0000000..1a54266
--- /dev/null
+++ b/fragments/labels/techsmithcapture.txt
@@ -0,0 +1,8 @@
+
+techsmithcapture)
+ # credit Elena Ackley (@elenaelago)
+ name="TechSmith Capture"
+ type="dmg"
+ downloadURL="https://cdn.cloud.techsmith.com/techsmithcapture/mac/TechSmithCapture.dmg"
+ expectedTeamID="7TQL462TU8"
+ ;;
diff --git a/fragments/labels/telegram.txt b/fragments/labels/telegram.txt
new file mode 100644
index 0000000..db70fbe
--- /dev/null
+++ b/fragments/labels/telegram.txt
@@ -0,0 +1,8 @@
+
+telegram)
+ name="Telegram"
+ type="dmg"
+ downloadURL="https://telegram.org/dl/macos"
+ appNewVersion=$( curl -fs https://macos.telegram.org | grep anchor | head -1 | sed -E 's/.*a>([0-9.]*) .*/\1/g' )
+ expectedTeamID="6N38VWS5BX"
+ ;;
diff --git a/fragments/labels/textexpander.txt b/fragments/labels/textexpander.txt
new file mode 100644
index 0000000..3692f8d
--- /dev/null
+++ b/fragments/labels/textexpander.txt
@@ -0,0 +1,8 @@
+
+textexpander)
+ name="TextExpander"
+ type="zip"
+ downloadURL="https://textexpander.com/cgi-bin/redirect.pl?cmd=download&platform=osx"
+ appNewVersion=$( curl -fsIL "https://textexpander.com/cgi-bin/redirect.pl?cmd=download&platform=osx" | grep -i "^location" | awk '{print $2}' | tail -1 | cut -d "_" -f2 | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p' )
+ expectedTeamID="7PKJ6G4DXL"
+ ;;
diff --git a/fragments/labels/textmate.txt b/fragments/labels/textmate.txt
new file mode 100644
index 0000000..fb4d340
--- /dev/null
+++ b/fragments/labels/textmate.txt
@@ -0,0 +1,9 @@
+
+textmate)
+ name="TextMate"
+ type="tbz"
+ #downloadURL="https://api.textmate.org/downloads/release?os=10.12"
+ downloadURL=$(downloadURLFromGit "textmate" "textmate")
+ appNewVersion=$(versionFromGit "textmate" "textmate")
+ expectedTeamID="45TL96F76G"
+ ;;
diff --git a/fragments/labels/theunarchiver.txt b/fragments/labels/theunarchiver.txt
new file mode 100644
index 0000000..7afd22d
--- /dev/null
+++ b/fragments/labels/theunarchiver.txt
@@ -0,0 +1,9 @@
+
+theunarchiver)
+ name="The Unarchiver"
+ type="dmg"
+ downloadURL="https://dl.devmate.com/com.macpaw.site.theunarchiver/TheUnarchiver.dmg"
+ appNewVersion="$(curl -fs "https://theunarchiver.com" | grep -i "Latest version" | head -1 | sed -E 's/.*> ([0-9.]*) .*/\1/g')"
+ expectedTeamID="S8EX82NJP6"
+ appName="The Unarchiver.app"
+ ;;
diff --git a/fragments/labels/things.txt b/fragments/labels/things.txt
new file mode 100644
index 0000000..104ed96
--- /dev/null
+++ b/fragments/labels/things.txt
@@ -0,0 +1,7 @@
+
+things)
+ name="Things"
+ type="zip"
+ downloadURL="https://culturedcode.com/things/download/"
+ expectedTeamID="JLMPQHK86H"
+ ;;
diff --git a/fragments/labels/thunderbird.txt b/fragments/labels/thunderbird.txt
new file mode 100644
index 0000000..a2a9c13
--- /dev/null
+++ b/fragments/labels/thunderbird.txt
@@ -0,0 +1,8 @@
+
+thunderbird)
+ name="Thunderbird"
+ type="dmg"
+ downloadURL="https://download.mozilla.org/?product=thunderbird-latest&os=osx&lang=en-US"
+ expectedTeamID="43AQ936H96"
+ blockingProcesses=( thunderbird )
+ ;;
diff --git a/fragments/labels/tigervnc.txt b/fragments/labels/tigervnc.txt
new file mode 100644
index 0000000..d0d73c8
--- /dev/null
+++ b/fragments/labels/tigervnc.txt
@@ -0,0 +1,7 @@
+
+tigervnc)
+ name="TigerVNC Viewer"
+ type="dmg"
+ downloadURL=https://dl.bintray.com/tigervnc/stable/$(curl -s -l https://dl.bintray.com/tigervnc/stable/ | grep .dmg | sed 's/<' '
+' | awk -F'"' '/x86_64.dmg/ {print $6}' | head -1)
+ #appNewVersion=$( curl -fs https://www.vagrantup.com/downloads.html | grep -i "Current Version" )
+ appNewVersion=$(versionFromGit hashicorp vagrant)
+ expectedTeamID="D38WU7D763"
+ ;;
diff --git a/fragments/labels/valuesfromarguments.txt b/fragments/labels/valuesfromarguments.txt
new file mode 100644
index 0000000..1283bee
--- /dev/null
+++ b/fragments/labels/valuesfromarguments.txt
@@ -0,0 +1,19 @@
+
+valuesfromarguments)
+ if [[ -z $name ]]; then
+ printlog "need to provide 'name'"
+ exit 1
+ fi
+ if [[ -z $type ]]; then
+ printlog "need to provide 'type'"
+ exit 1
+ fi
+ if [[ -z $downloadURL ]]; then
+ printlog "need to provide 'downloadURL'"
+ exit 1
+ fi
+ if [[ -z $expectedTeamID ]]; then
+ printlog "need to provide 'expectedTeamID'"
+ exit 1
+ fi
+ ;;
diff --git a/fragments/labels/vanilla.txt b/fragments/labels/vanilla.txt
new file mode 100644
index 0000000..badc9ec
--- /dev/null
+++ b/fragments/labels/vanilla.txt
@@ -0,0 +1,7 @@
+
+vanilla)
+ name="Vanilla"
+ type="dmg"
+ downloadURL="https://macrelease.matthewpalmer.net/Vanilla.dmg"
+ expectedTeamID="Z4JV2M65MH"
+ ;;
diff --git a/fragments/labels/veracrypt.txt b/fragments/labels/veracrypt.txt
new file mode 100644
index 0000000..9d2ed06
--- /dev/null
+++ b/fragments/labels/veracrypt.txt
@@ -0,0 +1,10 @@
+
+veracrypt)
+ name="VeraCrypt"
+ type="pkgInDmg"
+ #downloadURL=$(curl -s -L "https://www.veracrypt.fr/en/Downloads.html" | grep -Eio 'href="https://launchpad.net/veracrypt/trunk/(.*)/+download/VeraCrypt_([0-9].*).dmg"' | cut -c7- | sed -e 's/"$//' | sed "s/+/+/g")
+ downloadURL=$(curl -fs "https://www.veracrypt.fr/en/Downloads.html" | grep "https.*\.dmg" | grep -vi "legacy" | tr '"' '
+' | grep "^https.*" | grep -vi ".sig" | sed "s/+/+/g")
+ appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*.*)\.dmg/\1/g' )
+ expectedTeamID="Z933746L2S"
+ ;;
diff --git a/fragments/labels/version.txt b/fragments/labels/version.txt
new file mode 100644
index 0000000..c5ef0a4
--- /dev/null
+++ b/fragments/labels/version.txt
@@ -0,0 +1,6 @@
+
+version)
+ # print the script VERSION
+ printlog "$VERSION"
+ exit 0
+ ;;
diff --git a/fragments/labels/virtualbox.txt b/fragments/labels/virtualbox.txt
new file mode 100644
index 0000000..bca3761
--- /dev/null
+++ b/fragments/labels/virtualbox.txt
@@ -0,0 +1,11 @@
+
+virtualbox)
+ # credit: AP Orlebeke (@apizz)
+ name="VirtualBox"
+ type="pkgInDmg"
+ pkgName="VirtualBox.pkg"
+ downloadURL=$(curl -fs "https://www.virtualbox.org/wiki/Downloads" \
+ | awk -F '"' "/OSX.dmg/ { print \$4 }")
+ appNewVersion=$(curl -fs "https://www.virtualbox.org/wiki/Downloads" | awk -F '"' "/OSX.dmg/ { print \$4 }" | sed -E 's/.*virtualbox\/([0-9.]*)\/.*/\1/')
+ expectedTeamID="VB5E2TV963"
+ ;;
diff --git a/fragments/labels/viscosity.txt b/fragments/labels/viscosity.txt
new file mode 100644
index 0000000..9cdca92
--- /dev/null
+++ b/fragments/labels/viscosity.txt
@@ -0,0 +1,9 @@
+
+viscosity)
+ #credit: @matins
+ name="Viscosity"
+ type="dmg"
+ downloadURL="https://www.sparklabs.com/downloads/Viscosity.dmg"
+ appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z.\-]*%20([0-9.]*)\..*/\1/g' )
+ expectedTeamID="34XR7GXFPX"
+ ;;
diff --git a/fragments/labels/vivaldi.txt b/fragments/labels/vivaldi.txt
new file mode 100644
index 0000000..00d11cd
--- /dev/null
+++ b/fragments/labels/vivaldi.txt
@@ -0,0 +1,9 @@
+
+vivaldi)
+ name="Vivaldi"
+ type="tbz"
+ downloadURL=$(curl -fsL "https://update.vivaldi.com/update/1.0/public/mac/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
+ appNewVersion=$(curl -is "https://update.vivaldi.com/update/1.0/public/mac/appcast.xml" | grep sparkle:version | tr ',' '
+' | grep sparkle:version | cut -d '"' -f 4)
+ expectedTeamID="4XF3XNRN6Y"
+ ;;
diff --git a/fragments/labels/vlc.txt b/fragments/labels/vlc.txt
new file mode 100644
index 0000000..a7e0a3c
--- /dev/null
+++ b/fragments/labels/vlc.txt
@@ -0,0 +1,13 @@
+
+vlc)
+ name="VLC"
+ type="dmg"
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 )
+ appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 )
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 )
+ appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 )
+ fi
+ expectedTeamID="75GAHG3SZQ"
+ ;;
diff --git a/fragments/labels/vmwarehorizonclient.txt b/fragments/labels/vmwarehorizonclient.txt
new file mode 100644
index 0000000..eed0f42
--- /dev/null
+++ b/fragments/labels/vmwarehorizonclient.txt
@@ -0,0 +1,9 @@
+
+vmwarehorizonclient)
+ # credit: Oh4sh0 https://github.com/Oh4sh0
+ name="VMware Horizon Client"
+ type="dmg"
+ downloadURL=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | grep -o 'Url.*..dmg"' | cut -d '"' -f3)
+ appNewVersion=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | sed 's/.*-\(.*\)-.*/\1/')
+ expectedTeamID="EG7KH642X6"
+ ;;
diff --git a/fragments/labels/vscodium.txt b/fragments/labels/vscodium.txt
new file mode 100644
index 0000000..f95bfff
--- /dev/null
+++ b/fragments/labels/vscodium.txt
@@ -0,0 +1,12 @@
+
+vscodium)
+ # credit: AP Orlebeke (@apizz)
+ name="VSCodium"
+ type="dmg"
+ downloadURL=$(curl -fs "https://api.github.com/repos/VSCodium/vscodium/releases/latest" | awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ && ! /sha256/ { print \$4 }")
+ #downloadURL=$(downloadURLFromGit VSCodium vscodium) # Too many versions
+ appNewVersion=$(versionFromGit VSCodium vscodium)
+ expectedTeamID="C7S3ZQ2B8V"
+ appName="VSCodium.app"
+ blockingProcesses=( Electron )
+ ;;
diff --git a/fragments/labels/webex.txt b/fragments/labels/webex.txt
new file mode 100644
index 0000000..22b362d
--- /dev/null
+++ b/fragments/labels/webex.txt
@@ -0,0 +1,13 @@
+
+webex|\
+webexteams)
+ # credit: Erik Stam (@erikstam)
+ name="Webex"
+ type="dmg"
+ if [[ $(arch) == arm64 ]]; then
+ downloadURL="https://binaries.webex.com/WebexDesktop-MACOS-Apple-Silicon-Gold/Webex.dmg"
+ elif [[ $(arch) == i386 ]]; then
+ downloadURL="https://binaries.webex.com/WebexTeamsDesktop-MACOS-Gold/Webex.dmg"
+ fi
+ expectedTeamID="DE8Y96K9QP"
+ ;;
diff --git a/fragments/labels/webexmeetings.txt b/fragments/labels/webexmeetings.txt
new file mode 100644
index 0000000..2ae0602
--- /dev/null
+++ b/fragments/labels/webexmeetings.txt
@@ -0,0 +1,11 @@
+
+webexmeetings)
+ # credit: Erik Stam (@erikstam)
+ name="Cisco Webex Meetings"
+ type="pkgInDmg"
+ downloadURL="https://akamaicdn.webex.com/client/webexapp.dmg"
+ expectedTeamID="DE8Y96K9QP"
+ targetDir="/Applications"
+ #blockingProcessesMaxCPU="5"
+ blockingProcesses=( Webex )
+ ;;
diff --git a/fragments/labels/whatsapp.txt b/fragments/labels/whatsapp.txt
new file mode 100644
index 0000000..bf2c0ab
--- /dev/null
+++ b/fragments/labels/whatsapp.txt
@@ -0,0 +1,7 @@
+
+whatsapp)
+ name="WhatsApp"
+ type="dmg"
+ downloadURL="https://web.whatsapp.com/desktop/mac/files/WhatsApp.dmg"
+ expectedTeamID="57T9237FN3"
+ ;;
diff --git a/fragments/labels/wickrme.txt b/fragments/labels/wickrme.txt
new file mode 100644
index 0000000..f9c15bc
--- /dev/null
+++ b/fragments/labels/wickrme.txt
@@ -0,0 +1,10 @@
+
+wickrme)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="WickrMe"
+ type="dmg"
+ downloadURL=$( curl -fs https://me-download.wickr.com/api/download/me/download/mac | tr '"' '
+' | grep -e '^https://' )
+ appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="W8RC3R952A"
+ ;;
diff --git a/fragments/labels/wickrpro.txt b/fragments/labels/wickrpro.txt
new file mode 100644
index 0000000..4dbfef2
--- /dev/null
+++ b/fragments/labels/wickrpro.txt
@@ -0,0 +1,10 @@
+
+wickrpro)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="WickrPro"
+ type="dmg"
+ downloadURL=$( curl -fs https://me-download.wickr.com/api/download/pro/download/mac | tr '"' '
+' | grep -e '^https://' )
+ appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
+ expectedTeamID="W8RC3R952A"
+ ;;
diff --git a/fragments/labels/wireshark.txt b/fragments/labels/wireshark.txt
new file mode 100644
index 0000000..60a9eec
--- /dev/null
+++ b/fragments/labels/wireshark.txt
@@ -0,0 +1,9 @@
+
+wireshark)
+ # credit: Oh4sh0 https://github.com/Oh4sh0
+ name="Wireshark"
+ type="dmg"
+ downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Intel%2064.dmg"
+ appNewVersion=$(curl -fs https://www.wireshark.org/download.html | grep "Stable Release" | grep -o "(.*.)" | cut -f2 | head -1 | awk -F '[()]' '{print $2}')
+ expectedTeamID="7Z6EMTD2C6"
+ ;;
diff --git a/fragments/labels/wwdc.txt b/fragments/labels/wwdc.txt
new file mode 100644
index 0000000..ba6f299
--- /dev/null
+++ b/fragments/labels/wwdc.txt
@@ -0,0 +1,9 @@
+
+wwdc)
+ # credit: Søren Theilgaard (@theilgaard)
+ name="WWDC"
+ type="dmg"
+ downloadURL=$(downloadURLFromGit insidegui WWDC)
+ appNewVersion=$(versionFromGit insidegui WWDC)
+ expectedTeamID="8C7439RJLG"
+ ;;
diff --git a/fragments/labels/xeroxphaser7800.txt b/fragments/labels/xeroxphaser7800.txt
new file mode 100644
index 0000000..c38f33d
--- /dev/null
+++ b/fragments/labels/xeroxphaser7800.txt
@@ -0,0 +1,7 @@
+
+xeroxphaser7800)
+ name="XeroxPhaser"
+ type="pkgInDmg"
+ downloadURL=$(curl -fs "https://www.support.xerox.com/en-us/product/phaser-7800/downloads?platform=macOSx11" | xmllint --html --format - 2>/dev/null | grep -o "https://.*XeroxDrivers.*.dmg")
+ expectedTeamID="G59Y3XFNFR"
+ ;;
diff --git a/fragments/labels/xink.txt b/fragments/labels/xink.txt
new file mode 100644
index 0000000..a4f52be
--- /dev/null
+++ b/fragments/labels/xink.txt
@@ -0,0 +1,8 @@
+
+xink)
+ name="Xink"
+ type="zip"
+ downloadURL="https://downloads.xink.io/macos/client"
+ #appNewVersion=$() # Cannot find version history or release notes on home page
+ expectedTeamID="F287823HVS"
+ ;;
diff --git a/fragments/labels/xquartz.txt b/fragments/labels/xquartz.txt
new file mode 100644
index 0000000..4d18a7c
--- /dev/null
+++ b/fragments/labels/xquartz.txt
@@ -0,0 +1,9 @@
+
+xquartz)
+ # credit: AP Orlebeke (@apizz)
+ name="XQuartz"
+ type="pkgInDmg"
+ downloadURL=$(downloadURLFromGit XQuartz XQuartz)
+ appNewVersion=$(versionFromGit XQuartz XQuartz)
+ expectedTeamID="NA574AWV7E"
+ ;;
diff --git a/fragments/labels/yubikeymanagerqt.txt b/fragments/labels/yubikeymanagerqt.txt
new file mode 100644
index 0000000..0ab29fa
--- /dev/null
+++ b/fragments/labels/yubikeymanagerqt.txt
@@ -0,0 +1,10 @@
+
+yubikeymanagerqt)
+ # credit: Tadayuki Onishi (@kenchan0130)
+ name="YubiKey Manager GUI"
+ type="pkg"
+ downloadURL="https://developers.yubico.com/yubikey-manager-qt/Releases/$(curl -sfL https://api.github.com/repos/Yubico/yubikey-manager-qt/releases/latest | awk -F '"' '/"tag_name"/ { print $4 }')-mac.pkg"
+ #appNewVersion=$(curl -fs https://developers.yubico.com/yubikey-manager-qt/Releases/ | grep mac.pkg | head -1 | sed -E "s/.*-([0-9.]*)-mac.*/\1/") # does not work
+ appNewVersion=$(versionFromGit Yubico yubikey-manager-qt)
+ expectedTeamID="LQA3CS5MM7"
+ ;;
diff --git a/fragments/labels/zappy.txt b/fragments/labels/zappy.txt
new file mode 100644
index 0000000..587c802
--- /dev/null
+++ b/fragments/labels/zappy.txt
@@ -0,0 +1,7 @@
+
+zappy)
+ name="Zappy"
+ type="appInDmgInZip"
+ downloadURL="https://zappy.zapier.com/releases/zappy-latest.zip"
+ expectedTeamID="6LS97Q5E79"
+ ;;
diff --git a/fragments/labels/zoom.txt b/fragments/labels/zoom.txt
new file mode 100644
index 0000000..9e7ee9e
--- /dev/null
+++ b/fragments/labels/zoom.txt
@@ -0,0 +1,10 @@
+
+zoom)
+ # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
+ name="Zoom.us"
+ type="pkg"
+ downloadURL="https://zoom.us/client/latest/ZoomInstallerIT.pkg"
+ appNewVersion=$(curl -fs -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" "https://zoom.us/download" | grep Version | head -n 1 | sed -E 's/.* ([0-9.]* \(.*\)).*/\1/') # credit: Søren Theilgaard (@theilgaard)
+ expectedTeamID="BJ4HAAB9B3"
+ blockingProcesses=( zoom.us )
+ ;;
diff --git a/fragments/labels/zoomclient.txt b/fragments/labels/zoomclient.txt
new file mode 100644
index 0000000..178650a
--- /dev/null
+++ b/fragments/labels/zoomclient.txt
@@ -0,0 +1,12 @@
+
+zoomclient)
+ name="zoom.us"
+ type="pkg"
+ packageID="us.zoom.pkg.videmeeting"
+ downloadURL="https://zoom.us/client/latest/Zoom.pkg"
+ expectedTeamID="BJ4HAAB9B3"
+ #appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/zoom.us" | grep currentVersion | tr ',' '
+' | grep currentVersion | cut -d '"' -f 4) # Does not match packageID
+ blockingProcesses=( zoom.us )
+ #blockingProcessesMaxCPU="5"
+ ;;
diff --git a/fragments/labels/zoomrooms.txt b/fragments/labels/zoomrooms.txt
new file mode 100644
index 0000000..cc78311
--- /dev/null
+++ b/fragments/labels/zoomrooms.txt
@@ -0,0 +1,25 @@
+
+zoomrooms)
+ name="ZoomRooms"
+ type="pkg"
+ packageID="us.zoom.pkg.zp"
+ downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg"
+ appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
+ expectedTeamID="BJ4HAAB9B3"
+ blockingProcesses=( "ZoomPresence" )
+ ;;
+zulujdk11)
+ name="Zulu JDK 11"
+ type="pkgInDmg"
+ packageID="com.azulsystems.zulu.11"
+ if [[ $(arch) == i386 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu11.*ca-jdk11.*x64.dmg" | sed 's/\//g')
+ elif [[ $(arch) == arm64 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu11.*ca-jdk11.*aarch64.dmg" | sed 's/\//g')
+ fi
+ expectedTeamID="TDTHCUPYFR"
+ appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
+ appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
+ ;;
diff --git a/fragments/labels/zulujdk13.txt b/fragments/labels/zulujdk13.txt
new file mode 100644
index 0000000..c320f8a
--- /dev/null
+++ b/fragments/labels/zulujdk13.txt
@@ -0,0 +1,16 @@
+
+zulujdk13)
+ name="Zulu JDK 13"
+ type="pkgInDmg"
+ packageID="com.azulsystems.zulu.13"
+ if [[ $(arch) == i386 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu13.*ca-jdk13.*x64.dmg" | sed 's/\//g')
+ elif [[ $(arch) == arm64 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu13.*ca-jdk13.*aarch64.dmg" | sed 's/\//g')
+ fi
+ expectedTeamID="TDTHCUPYFR"
+ appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
+ appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
+ ;;
diff --git a/fragments/labels/zulujdk15.txt b/fragments/labels/zulujdk15.txt
new file mode 100644
index 0000000..95b0a0e
--- /dev/null
+++ b/fragments/labels/zulujdk15.txt
@@ -0,0 +1,16 @@
+
+zulujdk15)
+ name="Zulu JDK 15"
+ type="pkgInDmg"
+ packageID="com.azulsystems.zulu.15"
+ if [[ $(arch) == i386 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu15.*ca-jdk15.*x64.dmg" | sed 's/\//g')
+ elif [[ $(arch) == arm64 ]]; then
+ downloadURL=$(curl -fs "https://www.azul.com/downloads/zulu-community/" | xmllint --html --format - 2>/dev/null | tr , '
+' | grep -o "https:.*/zulu15.*ca-jdk15.*aarch64.dmg" | sed 's/\//g')
+ fi
+ expectedTeamID="TDTHCUPYFR"
+ appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
+ appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
+ ;;