#!/bin/bash set -e VERSION="0.1.0" BASE_URL="https://chess.codes" INSTALL_DIR="${HOME}/.local/bin" detect_os() { case "$(uname -s)" in Linux*) echo "linux" ;; Darwin*) echo "darwin" ;; CYGWIN*|MINGW*|MSYS*) echo "windows" ;; *) echo "unsupported" ;; esac } detect_arch() { case "$(uname -m)" in x86_64) echo "amd64" ;; aarch64|arm64) echo "arm64" ;; *) echo "unsupported" ;; esac } download_linux() { local arch="$1" local file="chess-codes_linux_${arch}.tar.gz" local url="${BASE_URL}/${file}" echo "Downloading ${url}..." curl -sL "$url" | tar -xz -C /tmp mv "/tmp/chess-codes-linux-${arch}" "${INSTALL_DIR}/chess-codes" chmod +x "${INSTALL_DIR}/chess-codes" } download_darwin() { local arch="$1" local file="chess-codes_darwin_${arch}.tar.gz" local url="${BASE_URL}/${file}" echo "Downloading ${url}..." curl -sL "$url" | tar -xz -C /tmp mv "/tmp/chess-codes-darwin-${arch}" "${INSTALL_DIR}/chess-codes" chmod +x "${INSTALL_DIR}/chess-codes" } download_windows() { local file="chess-codes_windows_amd64.zip" local url="${BASE_URL}/${file}" echo "Downloading ${url}..." curl -sL "$url" -o /tmp/chess-codes_windows_amd64.zip unzip -o /tmp/chess-codes_windows_amd64.zip -d /tmp mkdir -p "${HOME}/chess-codes" mv "/tmp/chess-codes-windows-amd64.exe" "${HOME}/chess-codes/chess-codes.exe" echo "" echo "Installed to: ${HOME}/chess-codes/chess-codes.exe" echo "Add to PATH: setx PATH \"\$env:PATH;${HOME}\\chess-codes\" -Global" echo "Or restart PowerShell and run: \$env:PATH += \";${HOME}\\chess-codes\"" } main() { local os arch os=$(detect_os) arch=$(detect_arch) if [ "$os" = "unsupported" ]; then echo "Error: Unsupported operating system" exit 1 fi if [ "$arch" = "unsupported" ]; then echo "Error: Unsupported architecture: $(uname -m)" exit 1 fi mkdir -p "${INSTALL_DIR}" echo "Installing chess-codes v${VERSION} for ${os}/${arch}..." case "$os" in linux) download_linux "$arch" ;; darwin) download_darwin "$arch" ;; windows) download_windows ;; esac if [ "$os" != "windows" ]; then echo "" echo "Installed to: ${INSTALL_DIR}/chess-codes" echo "Add to PATH if needed: export PATH=\"\$PATH:${INSTALL_DIR}\"" fi echo "" echo "Done! Run 'chess-codes --help' to get started." } main