# 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