Files
agent-helm/install.sh
Bjorn Blomberg 1c14a59764
All checks were successful
build-and-push / build (push) Successful in 10s
install.sh: ingen sudo (mkdir bin först; ~/.local/bin-fallback; sudo sh för system-wide)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 17:28:49 +02:00

96 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
# agent-helm — klient-installer (självständig binär, Node + node-pty inbäddat).
#
# curl -fsSL https://gitea.brasse-pc.eu/brasse/agent-helm/raw/branch/main/install.sh | sh
#
# Valfria env-vars (annars defaults / fyll i config efteråt):
# AGENT_HELM_TOKEN=... delad token mot servern
# AGENT_HELM_SERVER=wss://... server-URL (default wss://rcai.brasse-pc.eu)
# AGENT_CMD=gemini kommandot som körs i pty:n
# PREFIX=/usr/local install-prefix för binären
set -eu
OWNER=brasse
REPO=agent-helm
BASE=https://gitea.brasse-pc.eu
API="$BASE/api/v1/repos/$OWNER/$REPO"
# --- OS + arkitektur ---
[ "$(uname -s)" = "Linux" ] || { echo "agent-helm: bara Linux stöds just nu"; exit 1; }
case "$(uname -m)" in
x86_64|amd64) ARCH=x64 ;;
aarch64|arm64) ARCH=arm64 ;;
*) echo "agent-helm: arkitektur $(uname -m) stöds inte (endast x64/arm64)"; exit 1 ;;
esac
ASSET="agent-helm-linux-$ARCH"
command -v curl >/dev/null 2>&1 || { echo "agent-helm: curl krävs"; exit 1; }
# --- senaste release-tag ---
echo "agent-helm: slår upp senaste release ..."
TAG=$(curl -fsSL "$API/releases/latest" | tr ',' '\n' | grep -m1 '"tag_name"' | cut -d'"' -f4)
[ -n "${TAG:-}" ] || { echo "agent-helm: hittade ingen release på $BASE"; exit 1; }
URL="$BASE/$OWNER/$REPO/releases/download/$TAG/$ASSET"
# --- bin-katalog: /usr/local/bin om root/skrivbar, annars ~/.local/bin (ingen sudo).
# För system-wide utan att vara root: curl -fsSL ... | sudo sh
PREFIX="${PREFIX:-/usr/local}"
if [ "$(id -u)" = 0 ] || { mkdir -p "$PREFIX/bin" 2>/dev/null && [ -w "$PREFIX/bin" ]; }; then
BIN="$PREFIX/bin"
else
BIN="$HOME/.local/bin"
fi
mkdir -p "$BIN"
echo "agent-helm: hämtar $ASSET ($TAG) -> $BIN/agent-helm"
tmp=$(mktemp)
curl -fSL "$URL" -o "$tmp"
chmod +x "$tmp"
install -m 0755 "$tmp" "$BIN/agent-helm"
rm -f "$tmp"
# --- config ---
CFGDIR="$HOME/.config/agent-helm"
CFG="$CFGDIR/config.env"
mkdir -p "$CFGDIR"
if [ ! -f "$CFG" ]; then
cat > "$CFG" <<EOF
# agent-helm klient-config
AGENT_HELM_TOKEN=${AGENT_HELM_TOKEN:-}
SERVER_URL=${AGENT_HELM_SERVER:-wss://rcai.brasse-pc.eu}
AGENT_CMD=${AGENT_CMD:-gemini}
# AGENT_CWD=/sökväg/till/projekt
EOF
chmod 600 "$CFG"
echo "agent-helm: config skapad: $CFG"
else
echo "agent-helm: behåller befintlig config: $CFG"
fi
# --- systemd user-service (valfri) ---
UNITDIR="$HOME/.config/systemd/user"
mkdir -p "$UNITDIR"
cat > "$UNITDIR/agent-helm.service" <<EOF
[Unit]
Description=agent-helm klient (daemon)
After=network-online.target
[Service]
EnvironmentFile=$CFG
ExecStart=$BIN/agent-helm
Restart=on-failure
RestartSec=3
[Install]
WantedBy=default.target
EOF
echo ""
echo " ✓ installerad: $BIN/agent-helm (version $TAG, $ARCH)"
case ":$PATH:" in *":$BIN:"*) ;; *) echo " ⚠ lägg till $BIN i din PATH";; esac
echo ""
echo " Nästa steg:"
echo " 1) sätt token: \${EDITOR:-nano} $CFG"
echo " 2a) kör direkt: set -a; . $CFG; agent-helm"
echo " 2b) eller som tjänst: systemctl --user daemon-reload && systemctl --user enable --now agent-helm"