#!/bin/bash

set -euo pipefail  # Safe mode

# Ensure required dependencies are installed
for cmd in yq; do
  if ! command -v "$cmd" >/dev/null 2>&1; then
    echo "❌ Error: $cmd is required but not installed."
    exit 1
  fi
done

# Prompt or get file argument
if [ -z "${1:-}" ]; then
  echo -n "📄 Enter path to the secret file (e.g., secret.yaml): "
  read -r SECRET_FILE
else
  SECRET_FILE=$1
fi

# Check file exists
if [ ! -f "$SECRET_FILE" ]; then
  echo "❌ Error: File not found: $SECRET_FILE"
  exit 1
fi

# Validate kind
KIND=$(yq eval '.kind' "$SECRET_FILE")
if [ "$KIND" != "Secret" ]; then
  echo "❌ Error: File is not a Kubernetes Secret (found kind: $KIND)"
  exit 1
fi

# Determine env filename
BASENAME=$(basename "$SECRET_FILE")
DIRNAME=$(dirname "$SECRET_FILE")

if [ "$BASENAME" = "secret.yaml" ]; then
  ENV_PATH="$DIRNAME/.env"
else
  NAME_PREFIX=$(echo "$BASENAME" | sed -E 's/-?secret\.ya?ml$//' | sed -E 's/\..*$//')
  ENV_PATH="$DIRNAME/.env-$NAME_PREFIX"
fi

# Convert stringData to .env format
yq -o=json '.stringData // {}' "$SECRET_FILE" | jq -r 'to_entries[] | "\(.key)=\(.value)"' > "$ENV_PATH"

echo "✅ Done! Generated .env file at: $ENV_PATH"