github.com/exercism/configlet@v3.9.3-0.20200318193232-c70be6269e71+incompatible/scripts/fetch-configlet (about) 1 #!/bin/bash 2 3 set -eo pipefail 4 5 readonly LATEST='https://api.github.com/repos/exercism/configlet/releases/latest' 6 7 case "$(uname)" in 8 (Darwin*) OS='mac' ;; 9 (Linux*) OS='linux' ;; 10 (Windows*) OS='windows' ;; 11 (MINGW*) OS='windows' ;; 12 (MSYS_NT-*) OS='windows' ;; 13 (*) OS='linux' ;; 14 esac 15 16 case "$OS" in 17 (windows*) EXT='zip' ;; 18 (*) EXT='tgz' ;; 19 esac 20 21 case "$(uname -m)" in 22 (*64*) ARCH='64bit' ;; 23 (*686*) ARCH='32bit' ;; 24 (*386*) ARCH='32bit' ;; 25 (*) ARCH='64bit' ;; 26 esac 27 28 if [ -z "${GITHUB_TOKEN}" ] 29 then 30 HEADER='' 31 else 32 HEADER="authorization: Bearer ${GITHUB_TOKEN}" 33 fi 34 35 FILENAME="configlet-${OS}-${ARCH}.${EXT}" 36 37 get_url () { 38 curl --header "$HEADER" -s "$LATEST" | 39 awk -v filename=$FILENAME '$1 ~ /browser_download_url/ && $2 ~ filename { print $2 }' | 40 tr -d '"' 41 } 42 43 URL=$(get_url) 44 45 case "$EXT" in 46 (*zip) 47 curl --header "$HEADER" -s --location "$URL" -o bin/latest-configlet.zip 48 unzip bin/latest-configlet.zip -d bin/ 49 rm bin/latest-configlet.zip 50 ;; 51 (*) curl --header "$HEADER" -s --location "$URL" | tar xz -C bin/ ;; 52 esac