[macOS] Implement helper to get GitHub package download URL (#4923)

This commit is contained in:
Dibir Magomedsaygitov
2022-02-07 17:19:09 +03:00
committed by GitHub
parent 5217af8068
commit f747f0983b
4 changed files with 36 additions and 15 deletions

View File

@@ -2,8 +2,7 @@
source ~/utils/utils.sh source ~/utils/utils.sh
echo Installing PowerShell... echo Installing PowerShell...
psRelease=$(curl -H "Authorization: token $API_PAT" -s "https://api.github.com/repos/PowerShell/PowerShell/releases/latest") psDownloadUrl=$(get_github_package_download_url "PowerShell" "PowerShell" "contains(\"osx-x64.pkg\")" "latest" "$API_PAT")
psDownloadUrl=$(echo $psRelease | jq -r '.assets[].browser_download_url | select(contains("osx-x64.pkg"))' | head -n 1)
download_with_retries $psDownloadUrl "/tmp" "powershell.pkg" download_with_retries $psDownloadUrl "/tmp" "powershell.pkg"
# Work around the issue on macOS Big Sur 11.5 or higher for possible error message ("can't be opened because Apple cannot check it for malicious software") when installing the package # Work around the issue on macOS Big Sur 11.5 or higher for possible error message ("can't be opened because Apple cannot check it for malicious software") when installing the package

View File

@@ -2,24 +2,23 @@
source ~/utils/utils.sh source ~/utils/utils.sh
echo "Get the latest Stack version..." echo "Get the latest Stack version..."
StackRelease=$(curl -H "Authorization: token $API_PAT" -s "https://api.github.com/repos/commercialhaskell/stack/releases/latest") stackDownloadUrl=$(get_github_package_download_url "commercialhaskell" "stack" "contains(\"osx-x86_64.tar.gz\")" "latest" "$API_PAT")
DownloadUrl=$(echo $StackRelease | jq -r '.assets[].browser_download_url | select(contains("osx-x86_64.tar.gz"))' | head -n 1) stackVersion=$(echo $stackDownloadUrl | cut -d "/" -f8 | tr -d "v")
StackVersion=$(echo $StackRelease | jq -r '.name' | cut -c2-) stackArchive="/tmp/stack.tar.gz"
StackArchive="/tmp/stack.tar.gz"
echo "Download stack version $StackVersion..." echo "Download stack version $stackVersion..."
download_with_retries $DownloadUrl "/tmp" "stack.tar.gz" download_with_retries $stackDownloadUrl "/tmp" "stack.tar.gz"
StackToolcachePath="$AGENT_TOOLSDIRECTORY/stack/$StackVersion" stackToolcachePath="$AGENT_TOOLSDIRECTORY/stack/$stackVersion"
DestinationPath="$StackToolcachePath/x64" destinationPath="$stackToolcachePath/x64"
mkdir -p $DestinationPath mkdir -p $destinationPath
echo "Unzip stack archive..." echo "Unzip stack archive..."
tar -xzf $StackArchive -C $DestinationPath --strip 1 tar -xzf $stackArchive -C $destinationPath --strip 1
touch $StackToolcachePath/x64.complete touch $stackToolcachePath/x64.complete
echo "export PATH="\$PATH":$DestinationPath" >> "$HOME/.bashrc" echo "export PATH="\$PATH":$destinationPath" >> "$HOME/.bashrc"
invoke_tests "Common" "Stack" invoke_tests "Common" "Stack"

View File

@@ -2,7 +2,7 @@
source ~/utils/utils.sh source ~/utils/utils.sh
echo "Install SwiftLint" echo "Install SwiftLint"
swiftlintUrl=$(curl -H "Authorization: token $API_PAT" -s "https://api.github.com/repos/realm/SwiftLint/releases/latest" | jq -r '.assets[].browser_download_url | select(contains("portable_swiftlint.zip"))') swiftlintUrl=$(get_github_package_download_url "realm" "SwiftLint" "contains(\"portable_swiftlint.zip\")" "latest" "$API_PAT")
download_with_retries $swiftlintUrl "/tmp" "portable_swiftlint.zip" download_with_retries $swiftlintUrl "/tmp" "portable_swiftlint.zip"
unzip -q "/tmp/portable_swiftlint.zip" -d /usr/local/bin unzip -q "/tmp/portable_swiftlint.zip" -d /usr/local/bin
# Remove the LICENSE file that comes along with the binary and the downloaded archive # Remove the LICENSE file that comes along with the binary and the downloaded archive

View File

@@ -171,3 +171,26 @@ configure_user_tccdb () {
local sqlQuery="INSERT OR IGNORE INTO access VALUES($values);" local sqlQuery="INSERT OR IGNORE INTO access VALUES($values);"
sqlite3 "$dbPath" "$sqlQuery" sqlite3 "$dbPath" "$sqlQuery"
} }
get_github_package_download_url() {
local REPO_OWNER=$1
local REPO_NAME=$2
local FILTER=$3
local VERSION=$4
local API_PAT=$5
local SEARCH_IN_COUNT="100"
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
json=$(curl "${authString[@]}" -s "https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/releases?per_page=${SEARCH_IN_COUNT}")
if [[ "$VERSION" == "latest" ]]; then
tagName=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]" | tail -1)
else
tagName=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]" | egrep "\w*${VERSION}" | tail -1)
fi
downloadUrl=$(echo $json | jq -r ".[] | select(.tag_name==\"${tagName}\").assets[].browser_download_url | select(${FILTER})" | head -n 1)
echo $downloadUrl
}