add fetcher script

This commit is contained in:
Corey McCandless
2020-10-13 10:30:56 -04:00
committed by Corey McCandless
parent 586afc8cd3
commit 6d54eb9acc

52
bin/fetch-canonical_data_syncer Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/bash
set -eo pipefail
readonly LATEST='https://api.github.com/repos/exercism/canonical-data-syncer/releases/latest'
case "$(uname)" in
(Darwin*) OS='mac' ;;
(Linux*) OS='linux' ;;
(Windows*) OS='windows' ;;
(MINGW*) OS='windows' ;;
(MSYS_NT-*) OS='windows' ;;
(*) OS='linux' ;;
esac
case "$OS" in
(windows*) EXT='zip' ;;
(*) EXT='tgz' ;;
esac
case "$(uname -m)" in
(*64*) ARCH='64bit' ;;
(*686*) ARCH='32bit' ;;
(*386*) ARCH='32bit' ;;
(*) ARCH='64bit' ;;
esac
if [ -z "${GITHUB_TOKEN}" ]
then
HEADER=''
else
HEADER="authorization: Bearer ${GITHUB_TOKEN}"
fi
FILENAME="canonical_data_syncer-${OS}-${ARCH}.${EXT}"
get_url () {
curl --header "$HEADER" -s "$LATEST" |
awk -v filename=$FILENAME '$1 ~ /browser_download_url/ && $2 ~ filename { print $2 }' |
tr -d '"'
}
URL=$(get_url)
case "$EXT" in
(*zip)
curl --header "$HEADER" -s --location "$URL" -o bin/latest-canonical_data_syncer.zip
unzip bin/latest-canonical_data_syncer.zip -d bin/
rm bin/latest-canonical_data_syncer.zip
;;
(*) curl --header "$HEADER" -s --location "$URL" | tar xz -C bin/ ;;
esac