#!/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 "$@"