Phase 2: Actuator provisioning - ProvisionLXC: pct create, start, package install, mounts, health check - ProvisionVM: qm create, status check via SSH - sshExecSimple helper for lightweight SSH command execution - resolveHost helper for entity attribute lookups Phase 5: Transition check enforcement - TransitionChecks map with 8 named checks: age-key-enrolled, mesh-joined, health-check-answering, no-inbound-edges, secrets-revoked, backups-verified, ingress-dns-removed, doc-page-complete - All checks accept pool + entity attrs for validation at transition time Phase 6: Cleanup - tools/setup-caveman.sh — npm install + wrapper + templates - tools/setup-hermes-soul.sh — SOUL.md provisioning - CLIENTS.md updated for thin client model (no git clone, API-based) - Old git-sync references replaced with context poller All tests pass, go vet clean.
34 lines
1.1 KiB
Bash
34 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
# setup-caveman.sh — install Caveman npm package and wrapper scripts
|
|
# for token-efficient CLI output on enrolled homelab clients.
|
|
set -euo pipefail
|
|
|
|
CLONE_DIR="${HOMELAB_CONTEXT_DIR:-/opt/homelab}"
|
|
BIN_DIR="$HOME/bin"
|
|
TOOLS_DIR="$CLONE_DIR/tools"
|
|
|
|
mkdir -p "$BIN_DIR"
|
|
|
|
# Install the caveman npm package globally.
|
|
if ! command -v caveman >/dev/null 2>&1; then
|
|
if command -v npm >/dev/null 2>&1; then
|
|
npm install -g caveman 2>/dev/null || true
|
|
echo "[setup-caveman] caveman npm package installed"
|
|
fi
|
|
fi
|
|
|
|
# Copy wrapper to ~/bin.
|
|
if [ -f "$TOOLS_DIR/caveman_wrapper.sh" ]; then
|
|
cp "$TOOLS_DIR/caveman_wrapper.sh" "$BIN_DIR/caveman_wrapper.sh"
|
|
chmod +x "$BIN_DIR/caveman_wrapper.sh"
|
|
echo "[setup-caveman] wrapper installed to $BIN_DIR/caveman_wrapper.sh"
|
|
fi
|
|
|
|
# Copy templates.
|
|
if [ -d "$TOOLS_DIR/caveman/templates" ]; then
|
|
mkdir -p "$BIN_DIR/caveman_templates"
|
|
cp "$TOOLS_DIR/caveman/templates/"*.txt "$BIN_DIR/caveman_templates/" 2>/dev/null || true
|
|
echo "[setup-caveman] templates installed"
|
|
fi
|
|
|
|
echo "[setup-caveman] done" |