#!/usr/bin/env bash set -Eeuo pipefail BUILDER_ROOT=${BUILDER_ROOT:-/opt/rust-package-builder} source "$BUILDER_ROOT/scripts/lib.sh" SRC=${1:?source path required} PKG_AGENT=${2:?agent package workspace required} AGENT_BINARY=${3:?agent binary path required} : "${VERSION:?RustProxy source version is required}" : "${PACKAGE_RELEASE:?package release is required}" : "${GPG_PRIVATE_KEY_FILE:?GPG key path is required}" [[ -x "$AGENT_BINARY" ]] || fatal "Go agent binary not found: $AGENT_BINARY" [[ -r "$SRC/docker-agent/rustproxy-docker-agent.service" ]] || fatal 'missing Docker Agent systemd unit' [[ -r "$SRC/docker-agent/docker-agent.env.example" ]] || fatal 'missing Docker Agent environment template' AGENT_NAME=rustproxy-docker-agent rm -rf -- "$PKG_AGENT" mkdir -p "$PKG_AGENT/payload" "$PKG_AGENT/scripts" install -D -m 0755 "$AGENT_BINARY" "$PKG_AGENT/payload/usr/bin/$AGENT_NAME" sed 's@/usr/local/bin/rustproxy-docker-agent@/usr/bin/rustproxy-docker-agent@g' \ "$SRC/docker-agent/rustproxy-docker-agent.service" > "$PKG_AGENT/payload/agent.service" install -D -m 0644 "$PKG_AGENT/payload/agent.service" "$PKG_AGENT/payload/usr/lib/systemd/system/$AGENT_NAME.service" install -D -m 0600 "$SRC/docker-agent/docker-agent.env.example" "$PKG_AGENT/payload/etc/rustproxy/docker-agent.env" install -D -m 0644 "$SRC/docker-agent/README.md" "$PKG_AGENT/payload/usr/share/doc/$AGENT_NAME/README.md" cat > "$PKG_AGENT/scripts/deb-postinstall.sh" <<'SCRIPT' #!/bin/sh set -e if ! getent group rustproxy-docker-agent >/dev/null 2>&1; then addgroup --system rustproxy-docker-agent >/dev/null fi if ! getent passwd rustproxy-docker-agent >/dev/null 2>&1; then adduser --system --ingroup rustproxy-docker-agent --home /var/lib/rustproxy-docker-agent \ --no-create-home --disabled-password --shell /usr/sbin/nologin rustproxy-docker-agent >/dev/null fi if getent group docker >/dev/null 2>&1; then usermod -a -G docker rustproxy-docker-agent fi install -d -o rustproxy-docker-agent -g rustproxy-docker-agent -m 0750 /var/lib/rustproxy-docker-agent install -d -m 0750 /etc/rustproxy /usr/bin/rustproxy-docker-agent init if command -v systemctl >/dev/null 2>&1; then systemctl daemon-reload >/dev/null 2>&1 || true systemctl enable rustproxy-docker-agent.service >/dev/null 2>&1 || true if getent group docker >/dev/null 2>&1 && [ -S /var/run/docker.sock ]; then systemctl restart rustproxy-docker-agent.service >/dev/null 2>&1 || true else echo 'RustProxy Docker Agent installed but not started: Docker group/socket unavailable.' >&2 fi fi exit 0 SCRIPT cat > "$PKG_AGENT/scripts/rpm-postinstall.sh" <<'SCRIPT' #!/bin/sh set -e if ! getent group rustproxy-docker-agent >/dev/null 2>&1; then groupadd --system rustproxy-docker-agent fi if ! getent passwd rustproxy-docker-agent >/dev/null 2>&1; then useradd --system --gid rustproxy-docker-agent --home-dir /var/lib/rustproxy-docker-agent \ --no-create-home --shell /sbin/nologin rustproxy-docker-agent fi if getent group docker >/dev/null 2>&1; then usermod -a -G docker rustproxy-docker-agent fi install -d -o rustproxy-docker-agent -g rustproxy-docker-agent -m 0750 /var/lib/rustproxy-docker-agent install -d -m 0750 /etc/rustproxy /usr/bin/rustproxy-docker-agent init if command -v systemctl >/dev/null 2>&1; then systemctl daemon-reload >/dev/null 2>&1 || true systemctl enable rustproxy-docker-agent.service >/dev/null 2>&1 || true if getent group docker >/dev/null 2>&1 && [ -S /var/run/docker.sock ]; then systemctl restart rustproxy-docker-agent.service >/dev/null 2>&1 || true else echo 'RustProxy Docker Agent installed but not started: Docker group/socket unavailable.' >&2 fi fi exit 0 SCRIPT cat > "$PKG_AGENT/scripts/deb-preremove.sh" <<'SCRIPT' #!/bin/sh set -e case "${1:-}" in remove|deconfigure) systemctl stop rustproxy-docker-agent.service >/dev/null 2>&1 || true ;; esac exit 0 SCRIPT cat > "$PKG_AGENT/scripts/rpm-preremove.sh" <<'SCRIPT' #!/bin/sh set -e if [ "${1:-1}" -eq 0 ]; then systemctl stop rustproxy-docker-agent.service >/dev/null 2>&1 || true systemctl disable rustproxy-docker-agent.service >/dev/null 2>&1 || true fi exit 0 SCRIPT for kind in deb rpm; do cat > "$PKG_AGENT/scripts/$kind-postremove.sh" <<'SCRIPT' #!/bin/sh set -e systemctl daemon-reload >/dev/null 2>&1 || true exit 0 SCRIPT done chmod 0755 "$PKG_AGENT/scripts/"*.sh AGENT_NAME_Q=$(yaml_quote "$AGENT_NAME") VERSION_Q=$(yaml_quote "$VERSION") MAINTAINER_Q=$(yaml_quote "$MAINTAINER") HOMEPAGE_Q=$(yaml_quote "$HOMEPAGE") GPG_Q=$(yaml_quote "$GPG_PRIVATE_KEY_FILE") cat > "$PKG_AGENT/contents.yaml" < "$PKG_AGENT/nfpm-deb.yaml" < "$PKG_AGENT/nfpm-rpm.yaml" < "$PKG_AGENT/nfpm-suse.yaml" <