summaryrefslogtreecommitdiffstats
path: root/completions/koji
diff options
context:
space:
mode:
Diffstat (limited to 'completions/koji')
-rw-r--r--completions/koji245
1 files changed, 245 insertions, 0 deletions
diff --git a/completions/koji b/completions/koji
new file mode 100644
index 0000000..8efef9a
--- /dev/null
+++ b/completions/koji
@@ -0,0 +1,245 @@
+# 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