#!/usr/bin/env bash # Deploy the c4 binary to /opt/c4, then restart the service. # Works from the repo (builds first) or from an extracted tarball (pre-built binary). set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" INSTALL_DIR="/opt/c4" BINARY="$ROOT_DIR/c4" # If Go is available and we have source, build fresh if [[ -f "$ROOT_DIR/go.mod" ]] && command -v go &>/dev/null; then echo "Building CSS..." (cd "$ROOT_DIR" && go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify) echo "Building binary..." (cd "$ROOT_DIR" && CGO_ENABLED=0 go build -o c4 .) fi if [[ ! -f "$BINARY" ]]; then echo "ERROR: Binary not found at $BINARY" >&2 exit 1 fi echo "Installing to $INSTALL_DIR..." install -o games -g games -m 755 "$BINARY" "$INSTALL_DIR/c4" echo "Restarting service..." systemctl restart c4.service echo "Done. Status:" systemctl status c4.service --no-pager