From 400be8581e7d61addd5b3b2295efeba8a24d6e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 10:54:03 +0200 Subject: [PATCH 01/15] `checkLabels.sh` script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With a bit of improvements to explaining that labels are small case letters with numbers, “_”, and “-”. And nothing else. --- CheckLabels.sh | 221 ++++++++++++++++++++++++++++++++++++ README.md | 4 +- utils/buildCaseStatement.sh | 9 +- 3 files changed, 229 insertions(+), 5 deletions(-) create mode 100755 CheckLabels.sh diff --git a/CheckLabels.sh b/CheckLabels.sh new file mode 100755 index 0000000..fde5da3 --- /dev/null +++ b/CheckLabels.sh @@ -0,0 +1,221 @@ +#!/bin/zsh + +# Check Installomator labels from fragments +# 2020 Søren Theilgaard (@theilgaard) + +# This script will test labels and check if download link is active, and if version is defined. +# If labels are written to the script only those will be tested. +# If none are provided, it will test all labels. + +# Labels should be named in small caps, numbers 0-9, “-”, and “_”. No other characters allowed. + +# To check this script use these labels: +# desktoppr dbeaverce brave microsoftteams whatsapp citrixworkspace aircall devonthink + + +# MARK: Constants +SELF=$(basename $0) +SELFLOCATION=$(dirname $0) +pathToLabels="fragments/labels" + +#echo "Script: $SELFLOCATION/$SELF\n" + +# MARK: check minimal macOS requirement +if [[ $(sw_vers -buildVersion ) < "18" ]]; then + echo "Installomator requires at least macOS 10.14 Mojave." + exit 98 +fi + + +# MARK: Functions + +printlog(){ + echo "$1" +} + +runAsUser() { + if [[ $currentUser != "loginwindow" ]]; then + uid=$(id -u "$currentUser") + launchctl asuser $uid sudo -u $currentUser "$@" + 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"} + + #githubPart="$gitusername/$gitreponame/releases/download" + #echo "$githubPart" + downloadURL="https://github.com/$gitusername/$gitreponame/releases/latest" + echo "$downloadURL" + return 0 +} + +versionFromGit() { # $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://github.com/$gitusername/$gitreponame/releases/latest" | sed -E 's/.*tag\/(.*)\">.*/\1/g' | sed 's/[^0-9\.]//g') + if [ -z "$appNewVersion" ]; then + printlog "could not retrieve version number for $gitusername/$gitreponame: $appNewVersion" + exit 9 + 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 $@ + else + /usr/bin/xpath $@ + fi +} + +# Handling architecture, so I can verify both architectures +arch () { + echo $fixedArch +} + + +# MARK: Script +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[1;34m' +NC='\033[0m' # No Color + +# Labels with the $(arch) call for different versions for Intel and Apple Silicon should be listed here: +archLabels=( $(grep "$(arch)" "${pathToLabels}"/* | awk '{print $1}' | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g'| uniq ) ) +echo "${BLUE}Labels with \"\$(arch)\" call:${NC}\n${archLabels}\n" + +if [[ $# -eq 0 ]]; then + allLabels=( $(ls "${pathToLabels}"/*.sh | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g') ) +else + allLabels=( ${=@} ) +fi +echo "${BLUE}Total labels:${NC}\n${allLabels}\n" + +secondRoundLabels="" # variable for labels with $(arch) call in them +countWarning=0 +countError=0 +for fixedArch in i386 arm64; do +echo "${BLUE}Architecture: $fixedArch${NC}" +echo + +# Go through all labels +for label in $allLabels; do + echo "########## $label" + labelWarning=0; labelError=0; expectedExtension=""; URLextension="" + name=""; type=""; downloadURL=""; appNewVersion=""; expectedTeamID=""; blockingProcesses=""; updateTool=""; updateToolArguments=""; archiveName="" + + #caseLabel + cat "${pathToLabels}/${label}.sh" | grep -v -E '^[a-z0-9\_-]*(\)|\|\\)$' | grep -v ";;" > checkLabelCurrent.sh + source checkLabelCurrent.sh + + echo "Name: $name" + echo "Download URL: $downloadURL" + echo "Type: $type" + case $type in + dmg|pkg|zip|tbz) + expectedExtension="$type" + ;; + pkgInDmg) + expectedExtension="dmg" + ;; + *InZip) + expectedExtension="zip" + ;; + *) + echo "Cannot handle type $type" + ;; + esac + if [[ "$appNewVersion" == "" ]] ; then + echo "No appNewVersion!" + else + if [[ $( echo "$appNewVersion" | grep -i "[0-9.]" ) == "" || $appNewVersion == "" ]]; then + echo "${RED}-> !! ERROR in appNewVersion${NC}" + labelError=1 + else + if [[ $appNewVersion != $( echo "$appNewVersion" | sed -E 's/[^0-9]*([0-9.]*)[^0-9]*/\1/g' ) ]]; then + echo "${YELLOW}Warning: Version contain not only numbers and dots.${NC}" + labelWarning=1 + fi + echo "Version: $appNewVersion" ; + fi + fi + if curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then + echo "${GREEN}OK: downloadURL works OK${NC}" + if [[ $(echo "$downloadURL" | sed -E 's/.*\.([a-zA-Z]*)\s*/\1/g' ) == "${expectedExtension}" ]]; then + echo "${GREEN}OK: download extension MATCH on ${expectedExtension}${NC}" + else + if [[ $(echo "$downloadURL" | grep -io "github.com") != "github.com" ]]; then + URLheader=$( curl -fsIL "$downloadURL" ) + if [[ "${URLheader}" != "" ]]; then + URLlocation=$( echo "${URLheader}" | grep -i "^location" ) + URLfilename=$( echo "${URLheader}" | grep -i "filename=" ) + if [[ "${URLlocation}" != "" ]]; then + URLextension=$( echo "${URLlocation}" | tail -1 | sed -E 's/.*\.([a-zA-Z]*)\s*/\1/g' | tr -d '\r\n' ) + else + URLextension=$( echo "${URLfilename}" | tail -1 | sed -E 's/.*\.([a-zA-Z]*)\s*/\1/g' | tr -d '\r\n' ) + fi + URLextension=${URLextension:l} + if [[ "${URLextension}" == "${expectedExtension}" ]]; then + echo "${GREEN}OK: download extension MATCH on ${URLextension}${NC}" + else + echo "${RED}-> !! ERROR in download extension, expected ${expectedExtension}, but got ${URLextension}.${NC}" + labelError=1 + fi + else + echo "no header provided from server." + fi + else + githubPart="$(echo "$downloadURL" | cut -d "/" -f4-6)" + if [[ "$(curl -fsL "$downloadURL" | grep -io "${githubPart}.*\.${expectedExtension}")" != "" ]]; then + echo "${GREEN}OK: download extension MATCH on ${expectedExtension}${NC}" + else + echo "${RED}-> !! ERROR in download extension, expected ${expectedExtension}, but it was wrong${NC}" + labelError=1 + fi + fi + fi + else + echo "${RED}-> !! ERROR in downloadURL${NC}" + labelError=1 + fi + if [[ $labelWarning != 0 ]]; then; echo "${YELLOW}########## Warning in label: $label${NC}"; ((countWarning++)); fi + if [[ $labelError != 0 ]]; then; echo "${RED}########## ERROR in label: $label${NC}"; ((countError++)); fi + + if (($archLabels[(Ie)$label])); then + secondRoundLabels+=( "$label" ) + fi + + echo +done +allLabels=( ${=secondRoundLabels} ) +archLabels=() +echo +done + +rm checkLabelCurrent.sh + +#${SELFLOCATION}/Installomator.sh version +#echo + +if [[ countWarning > 0 ]]; then + echo "${YELLOW}Warnings counted: $countWarning${NC}" +else + echo "${GREEN}No warnings detected!${NC}" +fi +if [[ countError > 0 ]]; then + echo "${RED}ERRORS counted: $countError${NC}" +else + echo "${GREEN}No errors detected!${NC}" +fi + +echo "Done!" diff --git a/README.md b/README.md index 98ac02b..8bb2b17 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,9 @@ googlechrome) When you know how to extract these pieces of information from the application and/or download, then you can add an application to Installomator. -The script buildCaseStatement.sh can help with the label creation. +The script `buildCaseStatement.sh` can help with the label creation. + +Please note: Labels should be named in small caps, numbers 0-9, “-”, and “_”. No other characters allowed. ### Not specific to a management system diff --git a/utils/buildCaseStatement.sh b/utils/buildCaseStatement.sh index 81943e0..9d18ef3 100755 --- a/utils/buildCaseStatement.sh +++ b/utils/buildCaseStatement.sh @@ -122,6 +122,7 @@ elif [ "$archiveExt" = "zip" ] || [ "$archiveExt" = "tbz" ]; then fi +echo "Labels should be named in small caps, numbers 0-9, “-”, and “_”. No other characters allowed." echo echo "appNewVersion is often difficult to find. Can sometimes be found in the filename, but also on a web page. See archivePath above if link contains information about this." echo @@ -140,9 +141,9 @@ fi echo " ;;" echo -#if [ -e "${tmpDir}" ]; then -# #echo "deleting tmp dir" -# rm -rf "${tmpDir}" -#fi +if [ -e "${tmpDir}" ]; then + #echo "deleting tmp dir" + rm -rf "${tmpDir}" +fi exit 0 From 4ddc8a7f92c82b1cea727dda9a795dff1c7d1d50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 10:55:35 +0200 Subject: [PATCH 02/15] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ecd5e1f..4211055 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ scratch/ # do include Installomator .pkg files #!Installomator-*.pkg +checkLabelCurrent.sh From a20770314e4b5e237b9af76bad1f9d3566377200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 11:36:43 +0200 Subject: [PATCH 03/15] =?UTF-8?q?`extractLabels.sh`should=20work=20from=20?= =?UTF-8?q?=E2=80=9Cutils=E2=80=9D=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And added description of function of script. --- utils/extractLabels.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/extractLabels.sh b/utils/extractLabels.sh index 264acce..332332a 100755 --- a/utils/extractLabels.sh +++ b/utils/extractLabels.sh @@ -1,9 +1,12 @@ #!/bin/zsh +# This script will create individual labels files from the original Installomator.sh script +# Only for internal use + label_re='^([a-z0-9\_-]*)(\)|\|\\)$' endlabel_re='^( |\t);;$' -label_dir="fragments/labels" +label_dir="../fragments/labels" IFS=$'\n' @@ -24,4 +27,4 @@ while read -r line; do current_label="" fi -done <./Installomator.sh +done <../Installomator.sh From 4859efa72fef6dda5dffbb5c98be67ae115882aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 11:49:13 +0200 Subject: [PATCH 04/15] =?UTF-8?q?Moved=20to=20=E2=80=9Cutils=E2=80=9D.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CheckLabels.sh => utils/CheckLabels.sh | 2 +- utils/extractLabels.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename CheckLabels.sh => utils/CheckLabels.sh (99%) diff --git a/CheckLabels.sh b/utils/CheckLabels.sh similarity index 99% rename from CheckLabels.sh rename to utils/CheckLabels.sh index fde5da3..c87af94 100755 --- a/CheckLabels.sh +++ b/utils/CheckLabels.sh @@ -16,7 +16,7 @@ # MARK: Constants SELF=$(basename $0) SELFLOCATION=$(dirname $0) -pathToLabels="fragments/labels" +pathToLabels=../"fragments/labels" #echo "Script: $SELFLOCATION/$SELF\n" diff --git a/utils/extractLabels.sh b/utils/extractLabels.sh index 332332a..90fac45 100755 --- a/utils/extractLabels.sh +++ b/utils/extractLabels.sh @@ -6,7 +6,7 @@ label_re='^([a-z0-9\_-]*)(\)|\|\\)$' endlabel_re='^( |\t);;$' -label_dir="../fragments/labels" +label_dir=../"fragments/labels" IFS=$'\n' From db5c9ded564ef41ab465eedc56610f2f1a91fa38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 11:56:23 +0200 Subject: [PATCH 05/15] Update CheckLabels.sh --- utils/CheckLabels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/CheckLabels.sh b/utils/CheckLabels.sh index c87af94..bee2ffd 100755 --- a/utils/CheckLabels.sh +++ b/utils/CheckLabels.sh @@ -91,7 +91,7 @@ BLUE='\033[1;34m' NC='\033[0m' # No Color # Labels with the $(arch) call for different versions for Intel and Apple Silicon should be listed here: -archLabels=( $(grep "$(arch)" "${pathToLabels}"/* | awk '{print $1}' | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g'| uniq ) ) +archLabels=( $(grep "\$(arch)" "${pathToLabels}"/* | awk '{print $1}' | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g'| uniq ) ) echo "${BLUE}Labels with \"\$(arch)\" call:${NC}\n${archLabels}\n" if [[ $# -eq 0 ]]; then From 21b9709f6b12eb70ec686586c18f1e30c160a723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 12:00:17 +0200 Subject: [PATCH 06/15] Renaming to `checkLabels.sh` --- utils/{CheckLabels.sh => checkLabelsTEMP.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename utils/{CheckLabels.sh => checkLabelsTEMP.sh} (100%) diff --git a/utils/CheckLabels.sh b/utils/checkLabelsTEMP.sh similarity index 100% rename from utils/CheckLabels.sh rename to utils/checkLabelsTEMP.sh From 5585f8c558fc0112a690e4ef293e8d4ed80fa45f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 12:00:39 +0200 Subject: [PATCH 07/15] Renaming to `checkLabels.sh` --- utils/{checkLabelsTEMP.sh => checkLabels.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename utils/{checkLabelsTEMP.sh => checkLabels.sh} (100%) diff --git a/utils/checkLabelsTEMP.sh b/utils/checkLabels.sh similarity index 100% rename from utils/checkLabelsTEMP.sh rename to utils/checkLabels.sh From 30bd4797ae8b056bf708e319b69307bf56d8e46a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 12:54:53 +0200 Subject: [PATCH 08/15] Update extractLabels.sh --- utils/extractLabels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/extractLabels.sh b/utils/extractLabels.sh index 90fac45..904298b 100755 --- a/utils/extractLabels.sh +++ b/utils/extractLabels.sh @@ -6,7 +6,7 @@ label_re='^([a-z0-9\_-]*)(\)|\|\\)$' endlabel_re='^( |\t);;$' -label_dir=../"fragments/labels" +label_dir="fragments/labels" IFS=$'\n' From a481b17a789bb58d2b233bf75a2127c88141937d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 13:06:47 +0200 Subject: [PATCH 09/15] Update checkLabels.sh --- utils/checkLabels.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/utils/checkLabels.sh b/utils/checkLabels.sh index bee2ffd..db412a2 100755 --- a/utils/checkLabels.sh +++ b/utils/checkLabels.sh @@ -14,13 +14,16 @@ # MARK: Constants -SELF=$(basename $0) -SELFLOCATION=$(dirname $0) -pathToLabels=../"fragments/labels" +pathToLabels="fragments/labels" -#echo "Script: $SELFLOCATION/$SELF\n" +if [[ ! -d ${pathToLabels} ]]; then + echo "This script should be called from Installomator directory as working directory with this command:" + echo "utils/checkLabels.sh" + echo + exit 99 +fi -# MARK: check minimal macOS requirement +# MARK: Check minimal macOS requirement if [[ $(sw_vers -buildVersion ) < "18" ]]; then echo "Installomator requires at least macOS 10.14 Mojave." exit 98 @@ -77,7 +80,7 @@ xpath() { fi } -# Handling architecture, so I can verify both architectures +# Handling architecture, so I can verify both i386 and arm64 architectures arch () { echo $fixedArch } @@ -91,11 +94,11 @@ BLUE='\033[1;34m' NC='\033[0m' # No Color # Labels with the $(arch) call for different versions for Intel and Apple Silicon should be listed here: -archLabels=( $(grep "\$(arch)" "${pathToLabels}"/* | awk '{print $1}' | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g'| uniq ) ) +archLabels=( $(grep "\$(arch)" ${pathToLabels}/* | awk '{print $1}' | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g'| uniq ) ) echo "${BLUE}Labels with \"\$(arch)\" call:${NC}\n${archLabels}\n" if [[ $# -eq 0 ]]; then - allLabels=( $(ls "${pathToLabels}"/*.sh | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g') ) + allLabels=( $(ls ${pathToLabels}/*.sh | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g') ) else allLabels=( ${=@} ) fi From 1d634b9a80e9f79ef38bf176f784f35f93490a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 13:16:57 +0200 Subject: [PATCH 10/15] Update buildCaseStatement.sh --- utils/buildCaseStatement.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/buildCaseStatement.sh b/utils/buildCaseStatement.sh index 9d18ef3..cc4594a 100755 --- a/utils/buildCaseStatement.sh +++ b/utils/buildCaseStatement.sh @@ -12,7 +12,7 @@ downloadURL=${1?:"need to provide a download URL"} # create temporary working directory -tmpDir=$(dirname $0 ) +tmpDir=$(mktemp -d ) # change directory to temporary working directory echo "Changing directory to $tmpDir" @@ -122,6 +122,9 @@ elif [ "$archiveExt" = "zip" ] || [ "$archiveExt" = "tbz" ]; then fi +echo +echo "**********" +echo echo "Labels should be named in small caps, numbers 0-9, “-”, and “_”. No other characters allowed." echo echo "appNewVersion is often difficult to find. Can sometimes be found in the filename, but also on a web page. See archivePath above if link contains information about this." @@ -140,6 +143,9 @@ echo " appName=\"$appName\"" fi echo " ;;" echo +echo "Above should be saved in a file with exact same name as label, and given extension “.sh”." +echo "Put this file in folder “fragments/labels”." +echo if [ -e "${tmpDir}" ]; then #echo "deleting tmp dir" From c37229d763a5e63f7e80917eceabde2ede0a350f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Wed, 25 Aug 2021 13:53:17 +0200 Subject: [PATCH 11/15] Update buildCaseStatement.sh --- utils/buildCaseStatement.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/utils/buildCaseStatement.sh b/utils/buildCaseStatement.sh index cc4594a..07663ba 100755 --- a/utils/buildCaseStatement.sh +++ b/utils/buildCaseStatement.sh @@ -12,7 +12,10 @@ downloadURL=${1?:"need to provide a download URL"} # create temporary working directory -tmpDir=$(mktemp -d ) +# tmpDir=$(mktemp -d ) # create a temporary folder, can be removed in the bottom of script +# tmpDir=$(dirname "$0") # (REMEMBER to comment out removal of tmpDir in bottom of script) + +tmpDir=$(pwd) # use working directory as download folder (REMEMBER to comment out removal of tmpDir in bottom of script) # change directory to temporary working directory echo "Changing directory to $tmpDir" @@ -147,9 +150,9 @@ echo "Above should be saved in a file with exact same name as label, and given e echo "Put this file in folder “fragments/labels”." echo -if [ -e "${tmpDir}" ]; then - #echo "deleting tmp dir" - rm -rf "${tmpDir}" -fi +#if [ -e "${tmpDir}" ]; then +# #echo "deleting tmp dir" +# rm -rf "${tmpDir}" +#fi exit 0 From a87f0a6ec4e03cc7772ce0c37a5d123d7c541af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Thu, 26 Aug 2021 16:11:22 +0200 Subject: [PATCH 12/15] Current labels in 0.7.1b1 --- Labels.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Labels.txt b/Labels.txt index f4d3252..0cdab0a 100644 --- a/Labels.txt +++ b/Labels.txt @@ -44,6 +44,7 @@ blender bluejeans boxdrive boxtools +brave caffeine cakebrew calibre @@ -55,6 +56,7 @@ clickshare code42 coderunner colourcontrastanalyser +cormorant cryptomator cyberduck dangerzone @@ -128,6 +130,7 @@ jamfmigrator jamfpppcutility jamfreenroller jetbrainsdatagrip +jetbrainsintellijidea jetbrainsintellijideace jetbrainsphpstorm jetbrainspycharm @@ -202,6 +205,7 @@ pdfsam pitch plantronicshub platypus +plisteditpro postman prism9 privileges @@ -227,7 +231,9 @@ royaltsx rstudio santa scaleft +screamingfrogseospider screencloudplayer +screenflick sfsymbols shield sidekick From d167a51ee69ab91d998091df73737da2a4b31753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Thu, 26 Aug 2021 16:14:51 +0200 Subject: [PATCH 13/15] Now reads labels from first line of label files Instead of reading the name of the file --- utils/checkLabels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/checkLabels.sh b/utils/checkLabels.sh index db412a2..7287d7b 100755 --- a/utils/checkLabels.sh +++ b/utils/checkLabels.sh @@ -98,7 +98,7 @@ archLabels=( $(grep "\$(arch)" ${pathToLabels}/* | awk '{print $1}' | sed -E 's/ echo "${BLUE}Labels with \"\$(arch)\" call:${NC}\n${archLabels}\n" if [[ $# -eq 0 ]]; then - allLabels=( $(ls ${pathToLabels}/*.sh | sed -E 's/.*\/([a-z0-9\_-]*)\..*/\1/g') ) + allLabels=( $(grep -h -E '^([a-z0-9\_-]*)(\)|\|\\)$' ${pathToLabels}/*.sh | tr -d ')|\\' | sort) ) else allLabels=( ${=@} ) fi From 04880d329ef577f97f6d324be54d12314de0d526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Fri, 27 Aug 2021 10:11:07 +0200 Subject: [PATCH 14/15] smartgit --- fragments/labels/slack.sh | 5 ----- fragments/labels/smartgit.sh | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 fragments/labels/smartgit.sh diff --git a/fragments/labels/slack.sh b/fragments/labels/slack.sh index c5068d6..4a73dba 100644 --- a/fragments/labels/slack.sh +++ b/fragments/labels/slack.sh @@ -2,11 +2,6 @@ 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 '\r\n' | sed -E 's/.*macos\/([0-9.]*)\/.*/\1/g' ) expectedTeamID="BQR82RBBHL" ;; diff --git a/fragments/labels/smartgit.sh b/fragments/labels/smartgit.sh new file mode 100644 index 0000000..347c402 --- /dev/null +++ b/fragments/labels/smartgit.sh @@ -0,0 +1,7 @@ +smartgit) + name="SmartGit" + type="dmg" + downloadURL="https://www.syntevo.com$(curl -fs "https://www.syntevo.com/smartgit/download/" | grep -i -o -E "/downloads/.*/smartgit.*\.dmg")" + appNewVersion="$(curl -fs "https://www.syntevo.com/smartgit/changelog.txt" | grep -i -E "SmartGit *[0-9.]* *.*" | head -1 | awk '{print $2}')" + expectedTeamID="PHMY45PTNW" + ;; From 3bcb9e7e3203ea5d59161cbd5642cfb5c5dfeacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Theilgaard?= Date: Fri, 27 Aug 2021 11:04:33 +0200 Subject: [PATCH 15/15] labels sync --- .../{sfsymbols.sh => applesfsymbols.sh} | 3 ++- fragments/labels/boxsync.sh | 6 +++++ fragments/labels/boxtools.sh | 10 ++++---- fragments/labels/colourcontrastanalyser.sh | 14 +++++------ fragments/labels/craftmanager.sh | 8 +++++++ fragments/labels/insomnia.sh | 7 ++++++ fragments/labels/jetbrainsdatagrip.sh | 21 ++++++++-------- fragments/labels/jetbrainstoolbox.sh | 11 +++++++++ fragments/labels/muzzle.sh | 7 ++++++ fragments/labels/platypus.sh | 12 +++++----- fragments/labels/scaleft.sh | 14 +++++------ fragments/labels/webexteams.sh | 7 ------ fragments/labels/zulujdk8.sh | 24 +++++++++---------- 13 files changed, 88 insertions(+), 56 deletions(-) rename fragments/labels/{sfsymbols.sh => applesfsymbols.sh} (87%) create mode 100644 fragments/labels/boxsync.sh create mode 100644 fragments/labels/craftmanager.sh create mode 100644 fragments/labels/insomnia.sh create mode 100644 fragments/labels/jetbrainstoolbox.sh create mode 100644 fragments/labels/muzzle.sh delete mode 100644 fragments/labels/webexteams.sh diff --git a/fragments/labels/sfsymbols.sh b/fragments/labels/applesfsymbols.sh similarity index 87% rename from fragments/labels/sfsymbols.sh rename to fragments/labels/applesfsymbols.sh index bb63520..f90150b 100644 --- a/fragments/labels/sfsymbols.sh +++ b/fragments/labels/applesfsymbols.sh @@ -1,6 +1,7 @@ +applesfsymbols|\ sfsymbols) name="SF Symbols" type="pkgInDmg" downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg" expectedTeamID="Software Update" - ;; + ;; \ No newline at end of file diff --git a/fragments/labels/boxsync.sh b/fragments/labels/boxsync.sh new file mode 100644 index 0000000..9962e3f --- /dev/null +++ b/fragments/labels/boxsync.sh @@ -0,0 +1,6 @@ +boxsync) + name="Box Sync" + type="dmg" + downloadURL="https://e3.boxcdn.net/box-installers/sync/Sync+4+External/Box%20Sync%20Installer.dmg" + expectedTeamID="M683GB7CPW" + ;; \ No newline at end of file diff --git a/fragments/labels/boxtools.sh b/fragments/labels/boxtools.sh index 248dd3e..2963c68 100644 --- a/fragments/labels/boxtools.sh +++ b/fragments/labels/boxtools.sh @@ -1,6 +1,6 @@ boxtools) - name="Box Tools" - type="pkg" - downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" - expectedTeamID="M683GB7CPW" - ;; \ No newline at end of file + name="Box Tools" + type="pkg" + downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" + expectedTeamID="M683GB7CPW" + ;; \ No newline at end of file diff --git a/fragments/labels/colourcontrastanalyser.sh b/fragments/labels/colourcontrastanalyser.sh index 6cc0d84..613ccba 100644 --- a/fragments/labels/colourcontrastanalyser.sh +++ b/fragments/labels/colourcontrastanalyser.sh @@ -1,8 +1,8 @@ colourcontrastanalyser) - name="Colour Contrast Analyser (CCA)" - type="dmg" - downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe) - appNewVersion=$(versionFromGit ThePacielloGroup CCAe) - expectedTeamID="34RS4UC3M6" - blockingProcesses=( NONE ) - ;; \ No newline at end of file + name="Colour Contrast Analyser (CCA)" + type="dmg" + downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe) + appNewVersion=$(versionFromGit ThePacielloGroup CCAe) + expectedTeamID="34RS4UC3M6" + blockingProcesses=( NONE ) + ;; \ No newline at end of file diff --git a/fragments/labels/craftmanager.sh b/fragments/labels/craftmanager.sh new file mode 100644 index 0000000..6906ad6 --- /dev/null +++ b/fragments/labels/craftmanager.sh @@ -0,0 +1,8 @@ +craftmanager) + name="CraftManager" + type="zip" + #downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip" + downloadURL="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)" + appNewVersion="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)" + expectedTeamID="VRXQSNCL5W" + ;; \ No newline at end of file diff --git a/fragments/labels/insomnia.sh b/fragments/labels/insomnia.sh new file mode 100644 index 0000000..6d8922a --- /dev/null +++ b/fragments/labels/insomnia.sh @@ -0,0 +1,7 @@ +insomnia) + name="insomnia" + type="dmg" + downloadURL=$(downloadURLFromGit kong insomnia) + appNewVersion=$(versionFromGit kong insomnia) + expectedTeamID="FX44YY62GV" + ;; \ No newline at end of file diff --git a/fragments/labels/jetbrainsdatagrip.sh b/fragments/labels/jetbrainsdatagrip.sh index eeae78d..87a77f3 100644 --- a/fragments/labels/jetbrainsdatagrip.sh +++ b/fragments/labels/jetbrainsdatagrip.sh @@ -1,12 +1,11 @@ jetbrainsdatagrip) - # credit: AP Orlebeke (@apizz) - name="DataGrip" - type="dmg" - appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) - if [[ $(arch) == "arm64" ]]; then - downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5) - elif [[ $(arch) == "i386" ]]; then - downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5) - fi - expectedTeamID="2ZEFAR8TH3" - ;; \ No newline at end of file + name="DataGrip" + type="dmg" + appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) + if [[ $(arch) == "arm64" ]]; then + downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5) + elif [[ $(arch) == "i386" ]]; then + downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5) + fi + expectedTeamID="2ZEFAR8TH3" + ;; \ No newline at end of file diff --git a/fragments/labels/jetbrainstoolbox.sh b/fragments/labels/jetbrainstoolbox.sh new file mode 100644 index 0000000..16bef78 --- /dev/null +++ b/fragments/labels/jetbrainstoolbox.sh @@ -0,0 +1,11 @@ +jetbrainstoolbox) + name="JetBrains Toolbox" + type="dmg" + if [[ $(arch) == i386 ]]; then + downloadURL="https://download.jetbrains.com/product?code=TB&latest&distribution=mac" + elif [[ $(arch) == arm64 ]]; then + downloadURL="https://download.jetbrains.com/product?code=TB&latest&distribution=macM1" + fi + appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' ) + expectedTeamID="2ZEFAR8TH3" + ;; \ No newline at end of file diff --git a/fragments/labels/muzzle.sh b/fragments/labels/muzzle.sh new file mode 100644 index 0000000..76091f7 --- /dev/null +++ b/fragments/labels/muzzle.sh @@ -0,0 +1,7 @@ +muzzle) + name="Muzzle" + type="zip" + downloadURL="https://muzzleapp.com/binaries/muzzle.zip" + appNewVersion=$(curl -fs https://muzzleapp.com/updates/ | grep -io 'h2.*Version.* [0-9.]*.*h2' | head -1 | sed -E 's/.*ersion *([0-9.]*).*/\1/g') + expectedTeamID="49EYHPJ4Q3" + ;; \ No newline at end of file diff --git a/fragments/labels/platypus.sh b/fragments/labels/platypus.sh index 96d0394..62e2f41 100644 --- a/fragments/labels/platypus.sh +++ b/fragments/labels/platypus.sh @@ -1,7 +1,7 @@ platypus) - name="Platypus" - type="zip" - downloadURL=$(downloadURLFromGit sveinbjornt Platypus) - appNewVersion=$(versionFromGit sveinbjornt Platypus) - expectedTeamID="55GP2M789L" - ;; \ No newline at end of file + name="Platypus" + type="zip" + downloadURL=$(downloadURLFromGit sveinbjornt Platypus) + appNewVersion=$(versionFromGit sveinbjornt Platypus) + expectedTeamID="55GP2M789L" + ;; \ No newline at end of file diff --git a/fragments/labels/scaleft.sh b/fragments/labels/scaleft.sh index 295469d..5ce3448 100644 --- a/fragments/labels/scaleft.sh +++ b/fragments/labels/scaleft.sh @@ -1,8 +1,8 @@ scaleft) - name="ScaleFT" - type="pkg" - downloadURL="https://dist.scaleft.com/client-tools/mac/latest/ScaleFT.pkg" - appNewVersion=$(curl -sf "https://dist.scaleft.com/client-tools/mac/" | awk '/dir/{i++}i==2' | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p') - expectedTeamID="HV2G9Z3RP5" - blockingProcesses=( ScaleFT ) - ;; \ No newline at end of file + name="ScaleFT" + type="pkg" + downloadURL="https://dist.scaleft.com/client-tools/mac/latest/ScaleFT.pkg" + appNewVersion=$(curl -sf "https://dist.scaleft.com/client-tools/mac/" | awk '/dir/{i++}i==2' | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p') + expectedTeamID="HV2G9Z3RP5" + blockingProcesses=( ScaleFT ) + ;; diff --git a/fragments/labels/webexteams.sh b/fragments/labels/webexteams.sh deleted file mode 100644 index 2e9ca34..0000000 --- a/fragments/labels/webexteams.sh +++ /dev/null @@ -1,7 +0,0 @@ -webexteams) - # credit: Erik Stam (@erikstam) - name="Webex Teams" - type="dmg" - downloadURL="https://binaries.webex.com/WebexTeamsDesktop-MACOS-Gold/WebexTeams.dmg" - expectedTeamID="DE8Y96K9QP" - ;; diff --git a/fragments/labels/zulujdk8.sh b/fragments/labels/zulujdk8.sh index 56566d4..5581ffa 100644 --- a/fragments/labels/zulujdk8.sh +++ b/fragments/labels/zulujdk8.sh @@ -1,13 +1,13 @@ zulujdk8) - name="Zulu JDK 8" - type="pkgInDmg" - packageID="com.azulsystems.zulu.8" - if [[ $(arch) == i386 ]]; then - downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*x64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) - elif [[ $(arch) == arm64 ]]; then - downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*aarch64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) - fi - expectedTeamID="TDTHCUPYFR" - appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi } - appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything - ;; + name="Zulu JDK 8" + type="pkgInDmg" + packageID="com.azulsystems.zulu.8" + if [[ $(arch) == i386 ]]; then + downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*x64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) + elif [[ $(arch) == arm64 ]]; then + downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*aarch64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) + fi + expectedTeamID="TDTHCUPYFR" + appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi } + appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything + ;; \ No newline at end of file