#!/usr/bin/env bash
# nerf-kubectl-explain -- Show the schema documentation for a resource or field path.
# Generated from kubectl manifest. Do not edit directly.
# nerf:threat:read=remote
# nerf:threat:write=none

set -euo pipefail

_NERF_DRY_RUN=""

usage() {
  cat >&2 <<'EOF'
Usage: nerf-kubectl-explain [--recursive] <resource>

Switches:
  --recursive
      Print the entire schema recursively

Arguments:
  <resource> (required)
      Resource type or field path (e.g. pod, pod.spec.containers)
      Must match: ^[a-z][a-zA-Z0-9.-]*$

Maps to: kubectl explain <resource> <recursive>

Show the schema documentation for a resource or field path.
EOF
  exit 1
}

RECURSIVE=""

while [[ $# -gt 0 ]]; do
  case "$1" in
    --recursive) if [[ -n "${RECURSIVE}" ]]; then echo "error: --recursive can only be specified once" >&2; exit 1; fi; RECURSIVE="true"; shift 1 ;;
    --nerf-dry-run) _NERF_DRY_RUN="true"; shift 1 ;;
    -h|--help) usage ;;
    --) shift; break ;;
    *) break ;;
  esac
done

_RESOURCE_SET=""
if [[ $# -gt 0 ]]; then
  RESOURCE="$1"
  _RESOURCE_SET=true
  shift
else
  RESOURCE=""
fi
if [[ $# -gt 0 ]]; then
  echo "error: nerf-kubectl-explain: unexpected extra arguments: $*" >&2
  echo "  hint: switches and options must come before positional arguments" >&2
  exit 1
fi

if [[ -n "${_RESOURCE_SET}" ]] && [[ "${RESOURCE}" == -* ]]; then
  echo "error: nerf-kubectl-explain: <resource> cannot start with '-'" >&2
  echo "  hint: use -- before positional arguments if needed" >&2
  exit 1
fi

if [[ -z "${RESOURCE}" ]]; then
  echo "error: nerf-kubectl-explain: missing required argument <resource>" >&2
  echo "  hint: provide a value for <resource>" >&2
  usage
fi

_NERF_PATTERN='^[a-z][a-zA-Z0-9.-]*$'
if [[ -n "${_RESOURCE_SET}" ]] && ! [[ "${RESOURCE}" =~ $_NERF_PATTERN ]]; then
  echo "error: nerf-kubectl-explain: argument <resource> does not match required pattern" >&2
  echo "  value:   \"${RESOURCE}\"" >&2
  echo "  pattern: ^[a-z][a-zA-Z0-9.-]*$" >&2
  echo "  hint: value must match ^[a-z][a-zA-Z0-9.-]*$" >&2
  exit 1
fi

if [[ "$_NERF_DRY_RUN" == "true" ]]; then
  _NERF_DRY_CMD=(kubectl explain "${RESOURCE}" ${RECURSIVE:+"--recursive"})
  printf 'dry-run:'
  for _a in "${_NERF_DRY_CMD[@]}"; do printf " %q" "$_a"; done
  echo
  exit 0
fi

exec kubectl explain "${RESOURCE}" ${RECURSIVE:+"--recursive"}
