# koji completion -*- shell-script -*- _koji_search() { COMPREPLY+=($(compgen -W \ '$("$1" -q search $2 "$cur*" 2>/dev/null)' -- "$cur")) } _koji_build() { _koji_search "$1" build } _koji_package() { _koji_search "$1" package } _koji_user() { _koji_search "$1" user } _koji_tag() { COMPREPLY+=($(compgen -W '$("$1" -q list-tags 2>/dev/null)' -- "$cur")) } _koji_target() { COMPREPLY+=($(compgen -W '$("$1" -q list-targets 2>/dev/null | awk "{ print \$1 }")' -- "$cur")) } _koji() { local cur prev words cword split _init_completion -s || return local commandix command for ((commandix = 1; commandix < cword; commandix++)); do if [[ ${words[commandix]} != -* ]]; then command=${words[commandix]} break fi done case $prev in --help | --help-commands | -!(-*)h*) return ;; --config | --keytab | -!(-*)[co]) _filedir return ;; --runas | --user | --editor | --by) _koji_user "$1" return ;; --authtype) COMPREPLY=($(compgen -W 'noauth ssl password kerberos' -- "$cur")) return ;; --topdir) _filedir -d return ;; --type) case ${command-} in latest-pkg | list-tagged) COMPREPLY=($(compgen -W 'maven' -- "$cur")) ;; esac return ;; --name) case ${command-} in list-targets) _koji_target "$1" ;; esac return ;; --owner) _koji_user "$1" return ;; --tag | --latestfrom) _koji_tag "$1" return ;; --package) _koji_package "$1" return ;; --build) _koji_build "$1" return ;; --build-target) _koji_target "$1" return ;; esac $split && return if [[ -v command ]]; then if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W \ '$(_parse_help "$1" "$command --help")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi # How many'th non-option arg (1-based) for $command are we completing? local i nth=1 for ((i = commandix + 1; i < cword; i++)); do [[ ${words[i]} == -* ]] || ((nth++)) done case $command in build | maven-build | win-build) case $nth in 1) _koji_target "$1" ;; 2) _filedir src.rpm ;; esac ;; cancel) _koji_build "$1" ;; chain-build) case $nth in 1) _koji_target "$1" ;; esac ;; download-build) case $nth in 1) _koji_build "$1" ;; esac ;; import-comps) case $nth in 1) _filedir xml ;; 2) _koji_tag "$1" ;; esac ;; latest-by-tag) _koji_package "$1" ;; latest-pkg | list-groups | list-tag-inheritance | show-groups) case $nth in 1) _koji_tag "$1" ;; esac ;; list-tagged) case $nth in 1) _koji_tag "$1" ;; 2) _koji_package "$1" ;; esac ;; list-untagged) case $nth in 1) _koji_package "$1" ;; esac ;; move-pkg) case $nth in 1 | 2) _koji_tag "$1" ;; *) _koji_package "$1" ;; esac ;; search) case $nth in 1) COMPREPLY=($(compgen -W 'package build tag target user host rpm' -- "$cur")) ;; esac ;; tag-pkg | untag-pkg) case $nth in 1) _koji_tag "$1" ;; *) _koji_package "$1" ;; esac ;; taginfo) _koji_tag "$1" ;; wait-repo) case $nth in 1) for ((i = commandix + 1; i < cword; i++)); do if [[ ${words[i]} == --target ]]; then _koji_target "$1" return fi done _koji_tag "$1" ;; esac ;; esac return fi if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace elif [[ ! -v command ]]; then COMPREPLY=($(compgen -W '$("$1" --help-commands 2>/dev/null | \ awk "/^( +|\t)/ { print \$1 }")' -- "$cur")) fi } && complete -F _koji koji arm-koji ppc-koji s390-koji sparc-koji # ex: filetype=sh