#!/bin/sh # npmctl-installerare — hämtar senaste binär och lägger den i PATH med ETT kommando: # # curl -fsSL https://gitea.brasse-pc.eu/brasse/Npm-cli/raw/branch/main/install.sh | sh # # Miljövariabler: # NPMCTL_INSTALL_DIR installationskatalog (standard: /usr/local/bin, annars ~/.local/bin) # NPMCTL_VERSION release-tag att hämta (standard: latest) set -eu REPO="https://gitea.brasse-pc.eu/brasse/Npm-cli" VERSION="${NPMCTL_VERSION:-latest}" BIN="npmctl" info() { printf '\033[1;34m==>\033[0m %s\n' "$*"; } err() { printf '\033[1;31mfel:\033[0m %s\n' "$*" >&2; exit 1; } # --- OS/arch --- [ "$(uname -s)" = "Linux" ] || err "endast Linux stöds (hittade $(uname -s))" case "$(uname -m)" in x86_64|amd64) ASSET="npmctl-linux-x64" ;; aarch64|arm64) ASSET="npmctl-linux-arm64" ;; *) err "arkitektur stöds ej: $(uname -m)" ;; esac # --- verktyg --- if command -v curl >/dev/null 2>&1; then DL="curl -fsSL -o"; else command -v wget >/dev/null 2>&1 || err "behöver curl eller wget" DL="wget -qO" fi # --- installationskatalog --- DEST="${NPMCTL_INSTALL_DIR:-}" if [ -z "$DEST" ]; then if [ "$(id -u)" -eq 0 ] || [ -w /usr/local/bin ]; then DEST="/usr/local/bin" else DEST="$HOME/.local/bin" fi fi mkdir -p "$DEST" 2>/dev/null || true URL="$REPO/releases/download/$VERSION/$ASSET" TMP="$(mktemp)" trap 'rm -f "$TMP"' EXIT info "Hämtar $ASSET ($VERSION) …" $DL "$TMP" "$URL" || err "nedladdning misslyckades: $URL" chmod +x "$TMP" # --- placera binären (med sudo vid behov) --- TARGET="$DEST/$BIN" if mv "$TMP" "$TARGET" 2>/dev/null; then : elif command -v sudo >/dev/null 2>&1; then info "Behöver rättigheter för $DEST — använder sudo" sudo mv "$TMP" "$TARGET" && sudo chmod +x "$TARGET" else err "kan inte skriva till $DEST (kör som root, använd sudo, eller sätt NPMCTL_INSTALL_DIR)" fi trap - EXIT info "Installerat: $TARGET" "$TARGET" --version || true case ":$PATH:" in *":$DEST:"*) ;; *) info "OBS: $DEST ligger inte i PATH. Lägg till: export PATH=\"$DEST:\$PATH\"" ;; esac cat <