#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# ── Config ──────────────────────────────────────────────────────────────────
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_NAME="$(basename "$0")"

# ── Helpers ──────────────────────────────────────────────────────────────────
log()  { echo "[$(date +%T)] $*"; }
warn() { echo "[$(date +%T)] WARN: $*" >&2; }
die()  { echo "[$(date +%T)] ERROR: $*" >&2; exit 1; }

require() {
  for cmd in "$@"; do
    command -v "$cmd" >/dev/null 2>&1 || die "Required command not found: $cmd"
  done
}

# ── Usage ────────────────────────────────────────────────────────────────────
usage() {
  cat <<EOF
Usage: $SCRIPT_NAME [OPTIONS] <arg>

Options:
  -h, --help      Show this help
  -v, --verbose   Verbose output
  -n, --dry-run   Show what would happen, don't do it

EOF
  exit 0
}

# ── Parse args ───────────────────────────────────────────────────────────────
VERBOSE=0
DRY_RUN=0

while [[ $# -gt 0 ]]; do
  case "$1" in
    -h|--help)    usage ;;
    -v|--verbose) VERBOSE=1; shift ;;
    -n|--dry-run) DRY_RUN=1; shift ;;
    --) shift; break ;;
    -*) die "Unknown option: $1" ;;
    *)  break ;;
  esac
done

# ── Main ─────────────────────────────────────────────────────────────────────
require curl jq

log "Starting $SCRIPT_NAME"
[[ $VERBOSE -eq 1 ]] && log "Verbose mode ON"
[[ $DRY_RUN -eq 1 ]] && warn "Dry-run mode — no changes will be made"