#compdef jpptodo typeset -A opt_args local context state line _jpp_find_todo_path() { local todopath=$PWD while true; do [ -e "$todopath/TODO" ] && break; [ "$todopath" = "/" ] && todopath=$PWD && break; todopath=$(realpath "$todopath/..") done echo $todopath } _jpp_snums() { local todopath=$(_jpp_find_todo_path) [ -e "$todopath/TODO" ] || return; _values -w 'S-Nummern' \ $(awk "$1"'{ printf "%s ", $1 }' $todopath/TODO) } _jpp_done() { case "$state" in arg2) _values -w -s ' ' 'Aufgaben' \ '1[Model]' \ '2[Verwaltung]' \ '3[Import Export]' \ '4[Generierung]' \ '5[GUI]' \ '(1 2 3 4 5)all[Alle]' ;; *) _jpp_snums "/\s0\s/" ;; esac } _jpptodo() { _arguments "1:Commands:->commands" \ "2: :->arg1" \ "*: :->arg2" \ case "$state" in commands) _arguments '1:Commands:(new done todo lock run unlock)'\ '-o[offline mode]' \ '-d[debug]' ;; *) case $words[2] in lock) _jpp_snums "/open$/" ;; unlock) _jpp_snums "!/open$/" ;; done) _jpp_done ;; run) _jpp_snums ;; esac ;; esac } _jpptodo "$@"