# 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 -h|--help|--help-commands) return ;; -c|--config|--keytab|-o) _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 [[ $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 [[ ! $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: ts=4 sw=4 et filetype=sh