Skip to content

Commit

Permalink
Implement bash and zsh completions.
Browse files Browse the repository at this point in the history
  • Loading branch information
darko-poljak committed Jun 7, 2016
1 parent ebcb7aa commit 3079ab3
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
48 changes: 48 additions & 0 deletions 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
42 changes: 42 additions & 0 deletions 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 "$@"

0 comments on commit 3079ab3

Please sign in to comment.