mirror of
https://github.com/joelhooks/joelclaw.git
synced 2026-09-19 01:24:04 +08:00
74 lines
2.1 KiB
Bash
Executable File
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"
|