#!/usr/bin/env bash
set -euo pipefail

: "${CODEX_HOME:?CODEX_HOME is required}"
mkdir -p "$CODEX_HOME/skills" /data/runtime
cp -R /opt/optimizer-skills/. "$CODEX_HOME/skills/"

staging_config=/data/runtime/staging-kubeconfig
runtime_config=/data/runtime/kubeconfig
service_account_dir=/var/run/secrets/kubernetes.io/serviceaccount

if [[ -f "$service_account_dir/token" && -f "$service_account_dir/ca.crt" ]]; then
  cat >"$staging_config" <<EOF
apiVersion: v1
kind: Config
clusters:
- name: devops-staging
  cluster:
    server: https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}
    certificate-authority: ${service_account_dir}/ca.crt
users:
- name: auto-oncall-optimizer-staging
  user:
    tokenFile: ${service_account_dir}/token
contexts:
- name: devops-staging-observer
  context:
    cluster: devops-staging
    namespace: auto-oncall-services-staging
    user: auto-oncall-optimizer-staging
current-context: devops-staging-observer
EOF
  chmod 600 "$staging_config"
fi

prod_config=/etc/auto-oncall-prod-kubeconfig/config
if [[ -s "$staging_config" && -s "$prod_config" ]]; then
  KUBECONFIG="$staging_config:$prod_config" kubectl config view --flatten >"$runtime_config"
elif [[ -s "$staging_config" ]]; then
  cp "$staging_config" "$runtime_config"
elif [[ -s "$prod_config" ]]; then
  cp "$prod_config" "$runtime_config"
fi
[[ ! -e "$runtime_config" ]] || chmod 600 "$runtime_config"

exec /auto-oncall-optimizer
