42 lines
1.3 KiB
Bash
42 lines
1.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Emit Helm values for Forgejo DB + admin secrets (no mailer — OpenBao/ESO owns SMTP).
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
|
|
SECRETS_FILE="${FORGEJO_SECRETS:-$ROOT_DIR/helm/forgejo-secrets.sops.yaml}"
|
||
|
|
KUBECONFIG="${KUBECONFIG:-$HOME/.kube/config-hosteurope}"
|
||
|
|
|
||
|
|
emit_from_sops() {
|
||
|
|
sops -d "$SECRETS_FILE" | python3 -c "
|
||
|
|
import sys, yaml
|
||
|
|
data = yaml.safe_load(sys.stdin) or {}
|
||
|
|
mailer = data.get('gitea', {}).get('config', {}).get('mailer')
|
||
|
|
if mailer:
|
||
|
|
data['gitea']['config'].pop('mailer', None)
|
||
|
|
yaml.dump(data, sys.stdout, default_flow_style=False)
|
||
|
|
"
|
||
|
|
}
|
||
|
|
|
||
|
|
emit_from_cluster() {
|
||
|
|
python3 -c "
|
||
|
|
import json, os, subprocess, sys, yaml
|
||
|
|
os.environ['KUBECONFIG'] = '${KUBECONFIG}'
|
||
|
|
vals = json.loads(subprocess.check_output(
|
||
|
|
['helm', 'get', 'values', 'forgejo', '-n', 'forgejo', '-o', 'json'], text=True))
|
||
|
|
g = vals.get('gitea', {})
|
||
|
|
yaml.dump({
|
||
|
|
'gitea': {
|
||
|
|
'admin': {'password': g.get('admin', {}).get('password', '')},
|
||
|
|
'config': {
|
||
|
|
'database': {'PASSWD': g.get('config', {}).get('database', {}).get('PASSWD', '')},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}, sys.stdout, default_flow_style=False)
|
||
|
|
"
|
||
|
|
}
|
||
|
|
|
||
|
|
if command -v sops >/dev/null 2>&1 && sops -d "$SECRETS_FILE" >/dev/null 2>&1; then
|
||
|
|
emit_from_sops
|
||
|
|
else
|
||
|
|
emit_from_cluster
|
||
|
|
fi
|