#!/bin/sh # ADI CLI Installer # Usage: curl -fsSL https://get.withadi.dev | bash # # Environment variables: # ADI_VERSION - Specific version (default: latest) # ADI_INSTALL_DIR - Install directory (default: ~/.local/bin) # ADI_BASE_URL - Override base URL (default: https://get.withadi.dev) set -e BASE_URL="${ADI_BASE_URL:-https://get.withadi.dev}" BINARY="adi" info() { printf "\033[0;36m>\033[0m %s\n" "$1"; } success() { printf "\033[0;32m✓\033[0m %s\n" "$1"; } error() { printf "\033[0;31m✗\033[0m %s\n" "$1" >&2; exit 1; } detect_platform() { case "$(uname -s)" in Darwin) os="apple-darwin" ;; Linux) os="unknown-linux-musl" ;; *) error "Unsupported OS: $(uname -s)" ;; esac case "$(uname -m)" in x86_64|amd64) arch="x86_64" ;; arm64|aarch64) arch="aarch64" ;; *) error "Unsupported arch: $(uname -m)" ;; esac echo "${arch}-${os}" } fetch() { if command -v curl >/dev/null 2>&1; then curl -fsSL "$1" elif command -v wget >/dev/null 2>&1; then wget -qO- "$1" else error "curl or wget required" fi } download() { if command -v curl >/dev/null 2>&1; then curl -fsSL "$1" -o "$2" elif command -v wget >/dev/null 2>&1; then wget -q "$1" -O "$2" else error "curl or wget required" fi } main() { printf "\n\033[0;35mADI CLI Installer\033[0m\n\n" local platform=$(detect_platform) info "Platform: $platform" local version="${ADI_VERSION:-}" if [ -z "$version" ]; then info "Fetching latest version..." version=$(fetch "${BASE_URL}/releases/latest.txt" 2>/dev/null | tr -d '[:space:]') [ -z "$version" ] && error "Could not determine latest version" fi info "Version: $version" local install_dir="${ADI_INSTALL_DIR:-$HOME/.local/bin}" mkdir -p "$install_dir" local url="${BASE_URL}/releases/${version}/adi-${platform}.tar.gz" local tmp_dir=$(mktemp -d) trap "rm -rf '$tmp_dir'" EXIT info "Downloading..." download "$url" "$tmp_dir/adi.tar.gz" info "Extracting..." tar -xzf "$tmp_dir/adi.tar.gz" -C "$tmp_dir" chmod +x "$tmp_dir/$BINARY" mv "$tmp_dir/$BINARY" "$install_dir/$BINARY" success "Installed $BINARY ${version} to $install_dir/$BINARY" # Check PATH case ":$PATH:" in *":$install_dir:"*) ;; *) printf "\n\033[0;33m!\033[0m Add to PATH:\n" printf " export PATH=\"%s:\$PATH\"\n" "$install_dir" ;; esac printf "\nRun: \033[0;36madi --version\033[0m\n\n" } main "$@"