#!/usr/bin/env bash set -euo pipefail source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_common.sh" if [[ "$(uname -s)" != "Linux" ]]; then echo "process deployment is only supported on Linux" >&2 exit 1 fi if [[ "${EUID}" -ne 0 ]]; then echo "process deployment must run as root" >&2 exit 1 fi need_cmd() { if ! command -v "$1" >/dev/null 2>&1; then echo "missing required command: $1" >&2 exit 1 fi } need_cmd systemctl need_cmd install need_cmd curl if ! command -v go >/dev/null 2>&1; then bash scripts/init-go.sh fi need_cmd go SERVICE_NAME="${SERVICE_NAME:-accounts-svc-plus}" DOMAIN="${ACCOUNT_DOMAIN:-accounts.svc.plus}" LISTEN_ADDR="${ACCOUNT_LISTEN_ADDR:-127.0.0.1:8080}" PUBLIC_URL="${ACCOUNT_PUBLIC_URL:-https://${DOMAIN}}" CONFIG_DIR="${CONFIG_DIR:-/etc/accounts.svc.plus}" CONFIG_PATH="${CONFIG_PATH:-${CONFIG_DIR}/account.standalone.yaml}" BINARY_PATH="${BINARY_PATH:-/usr/local/bin/accounts-svc-plus}" SYSTEMD_UNIT_PATH="${SYSTEMD_UNIT_PATH:-/etc/systemd/system/${SERVICE_NAME}.service}" CADDY_CONF_DIR="${CADDY_CONF_DIR:-/etc/caddy/conf.d}" CADDY_CONF_PATH="${CADDY_CONF_PATH:-${CADDY_CONF_DIR}/${DOMAIN}.conf}" tmp_binary="$(mktemp)" trap 'rm -f "${tmp_binary}"' EXIT go build -o "${tmp_binary}" ./cmd/accountsvc/main.go install -d -m 0755 "$(dirname "${BINARY_PATH}")" "${CONFIG_DIR}" "${CADDY_CONF_DIR}" install -m 0755 "${tmp_binary}" "${BINARY_PATH}" cat > "${CONFIG_PATH}" < "${SYSTEMD_UNIT_PATH}" < "${CADDY_CONF_PATH}" </dev/null echo "process deployment complete" echo "service: ${SERVICE_NAME}.service" echo "config: ${CONFIG_PATH}" echo "caddy: ${CADDY_CONF_PATH}"