#!/usr/bin/env bash
source $HOME/.gamerc
set -euo pipefail

# 使用說明
usage() {
  cat <<'EOF'
用法：
  pg_param_get.sh 參數1 參數2 ...

說明：
  - 將參數名稱逐一傳入，透過 psql SHOW 查詢值並輸出為 CSV。
  - 輸出格式：參數名稱,PostgreSQL參數值
  - 預設使用 -U postgres，可用 PG* 環境變數 (PGHOST/PGPORT/PGDATABASE/PGUSER/PGPASSWORD) 覆蓋。

範例：
  PGHOST=127.0.0.1 PGDATABASE=postgres pg_param_get \
    max_connections huge_pages max_worker_processes max_parallel_workers work_mem
EOF
}

if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
  exit 0
fi

if [[ $# -eq 0 ]]; then
  echo "錯誤：請至少提供一個參數名稱。" >&2
  usage
  exit 1
fi

PSQL_BIN="${PSQL_BIN:-psql}"

# 輸出標頭
#echo "參數名稱,PostgreSQL參數值"
echo "==================================="
echo "// $HOST_NAME"

for param in "$@"; do
  # 查詢參數
  set +e
  val="$("$PSQL_BIN" -Atqc "SHOW ${param};" 2>/dev/null)"
  rc=$?
  set -e

  if [[ $rc -ne 0 || -z "$val" ]]; then
    val="(not found)"
  else
    # 去除多餘空白
    val="$(echo "$val" | awk '{$1=$1;print}')"
  fi

  echo "${param},${val}"
done

echo "==================================="
