From 3079ab3642dca7d023c0d8b4192df1171dff68dd Mon Sep 17 00:00:00 2001 From: Darko Poljak Date: Sun, 5 Jun 2016 20:41:16 +0200 Subject: [PATCH] Implement bash and zsh completions. --- completions/bash/ctt-completion.bash | 48 ++++++++++++++++++++++++++++ completions/zsh/_ctt | 42 ++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 completions/bash/ctt-completion.bash create mode 100644 completions/zsh/_ctt diff --git a/completions/bash/ctt-completion.bash b/completions/bash/ctt-completion.bash new file mode 100644 index 0000000..495e54e --- /dev/null +++ b/completions/bash/ctt-completion.bash @@ -0,0 +1,48 @@ +_ctt() +{ + local cur prev opts cmds projects + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + opts="-h --help -d --debug -v --verbose" + cmds="listprojects track report" + + case "${prev}" in + track|report) + if [[ -d ~/.ctt ]]; then + projects=$(ls ~/.ctt) + else + projects="" + fi + ;; + esac + + case "${prev}" in + -*|listprojects) + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + track) + opts="-h --help -d --debug -v --verbose --sd --start --ed --end -n --no-comment" + COMPREPLY=( $(compgen -W "${opts} ${projects}" -- ${cur}) ) + return 0 + ;; + report) + opts="-h --help -d --debug -v --verbose --sd --start --ed --end -a --all -e --regexp -i --ignore-case -f -format -s --summary" + COMPREPLY=( $(compgen -W "${opts} ${projects}" -- ${cur}) ) + return 0 + ;; + *) + ;; + esac + + if [[ ${cur} == -* ]]; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) ) + return 0 +} + +complete -F _ctt ctt diff --git a/completions/zsh/_ctt b/completions/zsh/_ctt new file mode 100644 index 0000000..006a0a3 --- /dev/null +++ b/completions/zsh/_ctt @@ -0,0 +1,42 @@ +#compdef ctt + +_ctt() +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments \ + '1: :->opts_cmds'\ + '*: :->opts' + + case $state in + opts_cmds) + _arguments '1:Options and commands:(listprojects track report -h --help -d --debug -v --verbose)' + ;; + *) + case $words[2] in + track|report) + projects=($(ls ~/.ctt)) + ;; + esac + + case $words[2] in + listprojects|-*) + opts=(-h --help -d --debug -v --verbose) + compadd "$@" -- $opts + ;; + track) + opts=(-h --help -d --debug -v --verbose --sd --start --ed --end -n --no-comment) + compadd "$@" -- $opts $projects + ;; + report) + opts=(-h --help -d --debug -v --verbose --sd --start --ed --end -a --all -e --regexp -i --ignore-case -f -format -s --summary) + compadd "$@" -- $opts $projects + ;; + *) + ;; + esac + esac +} + +_ctt "$@"