_workmux_handles() {
workmux _complete-handles 2>/dev/null
}
_workmux_agent_targets() {
workmux _complete-agent-targets 2>/dev/null
}
_workmux_git_branches() {
workmux _complete-git-branches 2>/dev/null
}
_workmux_dynamic() {
local cur prev words cword
if declare -F _init_completion >/dev/null 2>&1; then
_init_completion || return
else
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
words=("${COMP_WORDS[@]}")
cword=$COMP_CWORD
fi
if [[ ${cword} -ge 2 ]]; then
local cmd="${words[1]}"
case "$cmd" in
merge)
if [[ "$prev" == "--into" ]]; then
COMPREPLY=($(compgen -W "$(_workmux_handles)" -- "$cur"))
return
fi
if [[ "$cur" != -* ]]; then
COMPREPLY=($(compgen -W "$(_workmux_handles)" -- "$cur"))
return
fi
;;
open|remove|rm|rename|path|close)
if [[ "$cur" != -* ]]; then
COMPREPLY=($(compgen -W "$(_workmux_handles)" -- "$cur"))
return
fi
;;
send|capture|status|wait|run)
if [[ "$cur" != -* ]]; then
COMPREPLY=($(compgen -W "$(_workmux_agent_targets)" -- "$cur"))
return
fi
;;
add)
case "$prev" in
--base|-b)
COMPREPLY=($(compgen -W "$(_workmux_git_branches)" -- "$cur"))
return
;;
--prompt-file|-P)
COMPREPLY=($(compgen -f -- "$cur"))
return
;;
esac
if [[ "$cur" != -* ]]; then
COMPREPLY=($(compgen -W "$(_workmux_git_branches)" -- "$cur"))
return
fi
;;
esac
fi
_workmux "$@"
}
complete -F _workmux_dynamic -o bashdefault -o default workmux