#!/bin/bash set -euo pipefail REPO="lwlee2608/linear-cli" BINARY="linear" INSTALL_DIR="${INSTALL_DIR:-$HOME/.local/bin}" # Detect OS and architecture OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$ARCH" in x86_64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; *) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;; esac # Get latest release tag VERSION=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | cut -d'"' -f4) if [ -z "$VERSION" ]; then echo "Failed to fetch latest release" >&2 exit 1 fi echo "Installing ${BINARY} ${VERSION} (${OS}/${ARCH})..." # Download binary URL="https://github.com/${REPO}/releases/download/${VERSION}/${BINARY}-${OS}-${ARCH}.tar.gz" TMPDIR=$(mktemp -d) trap 'rm -rf "$TMPDIR"' EXIT curl -fsSL "$URL" -o "${TMPDIR}/archive.tar.gz" tar -xzf "${TMPDIR}/archive.tar.gz" -C "$TMPDIR" # Install mkdir -p "$INSTALL_DIR" install -m 755 "${TMPDIR}/${BINARY}" "${INSTALL_DIR}/${BINARY}" echo "Installed ${BINARY} to ${INSTALL_DIR}/${BINARY}" # Check if install dir is in PATH if ! echo "$PATH" | tr ':' '\n' | grep -qx "$INSTALL_DIR"; then echo "" echo "Add ${INSTALL_DIR} to your PATH:" echo " export PATH=\"${INSTALL_DIR}:\$PATH\"" fi