/ 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."