#!/bin/sh set -e REPO="kunchenguid/no-mistakes" INSTALL_DIR="${NO_MISTAKES_INSTALL_DIR:-$HOME/.no-mistakes/bin}" LINK_DIR="${NO_MISTAKES_LINK_DIR:-}" if [ -z "$LINK_DIR" ]; then case ":$PATH:" in *":$HOME/.local/bin:"*) LINK_DIR="$HOME/.local/bin" ;; *) LINK_DIR="/usr/local/bin" ;; esac fi BIN_PATH="$INSTALL_DIR/no-mistakes" LINK_PATH="$LINK_DIR/no-mistakes" OS="$(uname -s | tr '[:upper:]' '[:lower:]')" ARCH="$(uname -m)" case "$OS" in darwin|linux) ;; *) echo "Unsupported OS: $OS"; exit 1 ;; esac case "$ARCH" in x86_64|amd64) ARCH="amd64" ;; arm64|aarch64) ARCH="arm64" ;; *) echo "Unsupported architecture: $ARCH"; exit 1 ;; esac VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | sed -n 's/.*"tag_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -n 1)" if [ -z "$VERSION" ]; then echo "Could not determine latest release" exit 1 fi FILENAME="no-mistakes-${VERSION}-${OS}-${ARCH}.tar.gz" URL="https://github.com/${REPO}/releases/download/${VERSION}/${FILENAME}" TMPDIR="$(mktemp -d)" trap 'rm -rf "$TMPDIR"' EXIT echo "Downloading no-mistakes ${VERSION} for ${OS}/${ARCH}..." curl -fsSL "$URL" -o "${TMPDIR}/${FILENAME}" tar xzf "${TMPDIR}/${FILENAME}" -C "$TMPDIR" if ! mkdir -p "$INSTALL_DIR"; then echo "Could not create install directory: $INSTALL_DIR" exit 1 fi mv "${TMPDIR}/no-mistakes" "$BIN_PATH" chmod 755 "$BIN_PATH" 2>/dev/null || true resolve_path() { (cd "$1" 2>/dev/null && pwd -P) } REAL_INSTALL_DIR="$(resolve_path "$INSTALL_DIR")" REAL_LINK_DIR="$(resolve_path "$LINK_DIR" 2>/dev/null || echo "")" if [ -n "$REAL_INSTALL_DIR" ] && [ "$REAL_INSTALL_DIR" = "$REAL_LINK_DIR" ]; then echo "Install dir and link dir resolve to the same path; skipping symlink." else if [ -w "$LINK_DIR" ] || (mkdir -p "$LINK_DIR" 2>/dev/null && [ -w "$LINK_DIR" ]); then rm -f "$LINK_PATH" ln -s "$BIN_PATH" "$LINK_PATH" else echo "Linking ${LINK_PATH} to ${BIN_PATH} (requires sudo)..." sudo mkdir -p "$LINK_DIR" sudo rm -f "$LINK_PATH" sudo ln -s "$BIN_PATH" "$LINK_PATH" fi fi echo "no-mistakes ${VERSION} installed to ${BIN_PATH}" echo "Command path: ${LINK_PATH} -> ${BIN_PATH}" "$BIN_PATH" daemon restart >/dev/null case ":$PATH:" in *":$LINK_DIR:"*) ;; *) echo "Add ${LINK_DIR} to your PATH and restart your terminal." ;; esac