master
1#!/bin/bash
2
3case "$(uname -s)" in
4 Linux*) OS="linux";;
5 Darwin*) OS="darwin";;
6 CYGWIN*|MINGW*|MSYS*) OS="windows";;
7 *) OS="unknown";;
8esac
9
10# detect architecture
11case "$(uname -m)" in
12 x86_64) ARCH="amd64";;
13 aarch64) ARCH="arm64";;
14 arm64) ARCH="arm64";;
15 *) ARCH="unknown";;
16esac
17
18REPO="kahnwong/swissknife"
19GITHUB="https://api.github.com"
20VERSION=`
21 curl --silent "${GITHUB}/repos/{$REPO}/releases/latest" |
22 grep '"tag_name":' |
23 sed -E 's/.*"([^"]+)".*/\1/'
24`
25VERSION_BINARY=$(echo "${VERSION}" | sed 's/^v//')
26BINARY_NAME="swissknife"
27FILE="${BINARY_NAME}_${VERSION_BINARY}_${OS}_${ARCH}.tar.gz"
28
29# get current path, will be used later
30CURRENT_PATH=$(pwd)
31
32# download
33curl -L -s -o "/tmp/$FILE" "https://github.com/${REPO}/releases/download/${VERSION}/${FILE}"
34
35# extract
36echo "Extracting ${FILE}..."
37cd "/tmp" || exit 1
38tar -xzvf "${FILE}"
39if [ $? -ne 0 ]; then
40 echo "Error: Failed to extract ${FILE}."
41 exit 1
42fi
43
44# cleanup
45rm -f "${FILE}"
46rm README.md
47
48# move binary to CURRENT_PATH
49mv "$BINARY_NAME" "${CURRENT_PATH}/"
50
51# success message
52echo "Successfully downloaded and extracted ${FILE}."