Files
joelhooks__joelclaw/infra/central/scripts/write-shadow-env.sh
2026-05-27 15:21:18 -07:00

74 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=common.sh
source "${SCRIPT_DIR}/common.sh"
FORCE=0
if [[ "${1:-}" == "--force" ]]; then
FORCE=1
elif [[ "${1:-}" != "" ]]; then
fail "usage: $0 [--force]"
fi
random_hex() {
local bytes="$1"
openssl rand -hex "$bytes"
}
random_alnum() {
local bytes="$1"
openssl rand -hex "$bytes"
}
require_command openssl
if [[ -f "$ENV_FILE" && "$FORCE" != "1" ]]; then
fail "env file already exists: ${ENV_FILE}; pass --force to replace it"
fi
umask 077
mkdir -p "$(dirname "$ENV_FILE")"
cat >"$ENV_FILE" <<EOF
# Flagg Central shadow runtime env.
# Generated by infra/central/scripts/write-shadow-env.sh on $(date -u +%Y-%m-%dT%H:%M:%SZ).
# Never commit this file.
COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}
CENTRAL_MACHINE_ID=mac-studio-central
CENTRAL_HOSTNAME=flagg
CENTRAL_BIND_ADDR=${CENTRAL_BIND_ADDR}
SERVICE_USER=${SERVICE_USER}
SERVICE_GROUP=${SERVICE_GROUP}
SERVICE_ROOT=${SERVICE_ROOT}
CENTRAL_REPO_ROOT=/Users/Shared/joelclaw/src/joelclaw
CENTRAL_REDIS_DATA=${SERVICE_ROOT}/services/redis
CENTRAL_TYPESENSE_DATA=${SERVICE_ROOT}/services/typesense
CENTRAL_INNGEST_DATA=${SERVICE_ROOT}/services/inngest
# Restate stores data in a Docker named volume inside Colima because it needs Unix sockets.
CENTRAL_RESTATE_VOLUME=${CENTRAL_RESTATE_VOLUME}
CENTRAL_MINIO_DATA=${SERVICE_ROOT}/services/minio
CENTRAL_BACKUP_DIR=${CENTRAL_BACKUP_DIR}
CENTRAL_LOG_DIR=${CENTRAL_LOG_DIR}
# Shadow-only credentials. Do not reuse Panda production secrets unless a later migration step explicitly says so.
# Inngest self-hosted signing/event keys must be valid even-length hex strings.
TYPESENSE_API_KEY=flagg_shadow_typesense_$(random_hex 24)
MINIO_ROOT_USER=flaggshadow$(random_alnum 12)
MINIO_ROOT_PASSWORD=flagg_shadow_minio_$(random_hex 24)
INNGEST_EVENT_KEY=$(random_hex 32)
INNGEST_SIGNING_KEY=$(random_hex 32)
COLIMA_PROFILE=${COLIMA_PROFILE}
COLIMA_CPU=${COLIMA_CPU:-8}
COLIMA_MEMORY=${COLIMA_MEMORY:-24}
COLIMA_DISK=${COLIMA_DISK:-200}
EOF
chmod 600 "$ENV_FILE"
log "wrote shadow env: ${ENV_FILE}"
log "values are redacted; do not commit this file"