248 lines
6.2 KiB
Bash
248 lines
6.2 KiB
Bash
# 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
|