zsh/.zsh/completions/custom.zsh

# zsh/.zsh/completions/custom.zsh
# Custom completion functions for scripts in ~/bin.

# gh-pr: completes against open PRs in the current repo.
_gh_pr_complete() {
  local -a prs
  prs=("${(@f)$(gh pr list --limit 30 --state open \
    --json number,title -q '.[] | "\(.number):\(.title)"' 2>/dev/null)}")
  _describe 'PR' prs
}
compdef _gh_pr_complete gh-pr

# kube-nodes: completes against node names.
_kube_nodes_complete() {
  local -a nodes
  nodes=("${(@f)$(kubectl get nodes -o name 2>/dev/null | sed 's|node/||')}")
  _describe 'node' nodes
}
compdef _kube_nodes_complete kube-nodes

# pg: completes against docker compose services whose name contains 'db'.
_pg_complete() {
  local -a services
  if [[ -f docker-compose.yml || -f compose.yaml ]]; then
    services=("${(@f)$(docker compose config --services 2>/dev/null | grep -i db || true)}")
  fi
  _describe 'service' services
}
compdef _pg_complete pg

# nb: no arg completion beyond zsh's default; just make sure helpful commands exist.
compdef _files -g '*.md' nb

# notes search: treat rg-like args.
_ns_complete() {
  _files
}
compdef _ns_complete ns