#!/usr/bin/env bash
# Template entrypoint. Copy, rename, and replace main().
set -euo pipefail

readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly COLLECTION_DIR="$(dirname "$SCRIPT_DIR")"

DRY_RUN=0

usage() {
  cat <<'EOF'
Usage: example [--dry-run] [--help]

  --dry-run   Show what would happen without changing anything.
  --help      Show this message.
EOF
}

log()  { printf '%s\n' "$*"; }
warn() { printf '%s\n' "$*" >&2; }
die()  { warn "error: $*"; exit 1; }

# Run a mutating command, or describe it under --dry-run.
run() {
  if (( DRY_RUN )); then
    log "[dry-run] $*"
  else
    "$@"
  fi
}

load_env() {
  local env_file="$COLLECTION_DIR/.env"
  [[ -f "$env_file" ]] || return 0
  set -a; . "$env_file"; set +a
}

main() {
  while (( $# )); do
    case "$1" in
      --dry-run) DRY_RUN=1 ;;
      --help|-h) usage; exit 0 ;;
      *) die "unknown argument: $1" ;;
    esac
    shift
  done

  load_env
  : "${EXAMPLE_HOST:?EXAMPLE_HOST is not set — see .env.example}"

  log "target: $EXAMPLE_HOST"
  run true  # replace with the real work
}

main "$@"
