/ install.sh
install.sh
1 #!/bin/sh 2 set -e 3 4 REPO="Kocoro-lab/ShanClaw" 5 INSTALL_DIR="/usr/local/bin" 6 7 OS=$(uname -s | tr '[:upper:]' '[:lower:]') 8 ARCH=$(uname -m) 9 case "$ARCH" in 10 x86_64) ARCH="amd64" ;; 11 aarch64|arm64) ARCH="arm64" ;; 12 esac 13 14 echo "Detecting platform: ${OS}/${ARCH}" 15 16 # Get latest release tag 17 LATEST=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | sed -E 's/.*"v?([^"]+)".*/\1/') 18 19 if [ -z "$LATEST" ]; then 20 echo "Error: Could not detect latest version" 21 exit 1 22 fi 23 24 echo "Installing shan v${LATEST}..." 25 26 FILENAME="shan_${LATEST}_${OS}_${ARCH}.tar.gz" 27 URL="https://github.com/${REPO}/releases/download/v${LATEST}/${FILENAME}" 28 29 TMP=$(mktemp -d) 30 curl -fsSL "$URL" -o "${TMP}/${FILENAME}" 31 32 # Verify checksum if checksums.txt is available (graceful degradation for older releases) 33 CHECKSUM_URL="https://github.com/${REPO}/releases/download/v${LATEST}/checksums.txt" 34 if curl -fsSL "$CHECKSUM_URL" -o "${TMP}/checksums.txt" 2>/dev/null; then 35 echo "Verifying checksum..." 36 (cd "$TMP" && grep "${FILENAME}" checksums.txt | shasum -a 256 -c -) 37 if [ $? -ne 0 ]; then 38 echo "Error: Checksum verification failed!" 39 rm -rf "$TMP" 40 exit 1 41 fi 42 else 43 echo "Warning: checksums.txt not available, skipping verification" 44 fi 45 46 tar -xzf "${TMP}/${FILENAME}" -C "$TMP" 47 48 if [ -w "$INSTALL_DIR" ]; then 49 mv "${TMP}/shan" "${INSTALL_DIR}/shan" 50 else 51 sudo mv "${TMP}/shan" "${INSTALL_DIR}/shan" 52 fi 53 54 rm -rf "$TMP" 55 56 echo "shan v${LATEST} installed to ${INSTALL_DIR}/shan" 57 echo "Run 'shan' to get started."