koji: New completion.

This commit is contained in:
Ville Skyttä 2011-11-26 17:45:47 +02:00
parent bb02bcde80
commit 56672db701
5 changed files with 270 additions and 0 deletions

View File

@ -3,6 +3,7 @@ alpine
alternatives alternatives
animate animate
apropos apropos
arm-koji
asciidoc.py asciidoc.py
autoheader autoheader
automake-1.11 automake-1.11
@ -104,6 +105,7 @@ pm-suspend
pm-suspend-hybrid pm-suspend-hybrid
pmake pmake
postalias postalias
ppc-koji
puppetca puppetca
puppetd puppetd
puppetdoc puppetdoc
@ -133,6 +135,7 @@ rpm2targz
rpm2txz rpm2txz
rpmbuild rpmbuild
rpmbuild-md5 rpmbuild-md5
s390-koji
sbcl-mt sbcl-mt
scp scp
sdptool sdptool
@ -145,6 +148,7 @@ smbget
smbpasswd smbpasswd
smbtar smbtar
smbtree smbtree
sparc-koji
spovray spovray
stream stream
tightvncviewer tightvncviewer

View File

@ -148,6 +148,7 @@ bashcomp_DATA = a2x \
killall \ killall \
kldload \ kldload \
kldunload \ kldunload \
koji \
ktutil \ ktutil \
larch \ larch \
lastlog \ lastlog \
@ -340,6 +341,7 @@ CLEANFILES = \
alternatives \ alternatives \
animate \ animate \
apropos \ apropos \
arm-koji \
asciidoc.py \ asciidoc.py \
autoheader \ autoheader \
automake-1.11 \ automake-1.11 \
@ -441,6 +443,7 @@ CLEANFILES = \
pm-suspend-hybrid \ pm-suspend-hybrid \
pmake \ pmake \
postalias \ postalias \
ppc-koji \
puppetca \ puppetca \
puppetd \ puppetd \
puppetdoc \ puppetdoc \
@ -470,6 +473,7 @@ CLEANFILES = \
rpm2txz \ rpm2txz \
rpmbuild \ rpmbuild \
rpmbuild-md5 \ rpmbuild-md5 \
s390-koji \
sbcl-mt \ sbcl-mt \
scp \ scp \
sdptool \ sdptool \
@ -482,6 +486,7 @@ CLEANFILES = \
smbpasswd \ smbpasswd \
smbtar \ smbtar \
smbtree \ smbtree \
sparc-koji \
spovray \ spovray \
stream \ stream \
tightvncviewer \ tightvncviewer \
@ -634,6 +639,10 @@ symlinks:
rm -f $(targetdir)/$$file && \ rm -f $(targetdir)/$$file && \
$(LN_S) killall $(targetdir)/$$file ; \ $(LN_S) killall $(targetdir)/$$file ; \
done done
for file in arm-koji ppc-koji s390-koji sparc-koji ; do \
rm -f $(targetdir)/$$file && \
$(LN_S) koji $(targetdir)/$$file ; \
done
for file in ldapadd ldapmodify ldapdelete ldapcompare ldapmodrdn \ for file in ldapadd ldapmodify ldapdelete ldapcompare ldapmodrdn \
ldapwhoami ldappasswd ; do \ ldapwhoami ldappasswd ; do \
rm -f $(targetdir)/$$file && \ rm -f $(targetdir)/$$file && \

234
completions/koji Normal file
View File

@ -0,0 +1,234 @@
# 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|wait-repo)
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"
;;
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

1
test/completion/koji.exp Normal file
View File

@ -0,0 +1 @@
assert_source_completions koji

View File

@ -0,0 +1,22 @@
proc setup {} {
save_env
}
proc teardown {} {
assert_env_unmodified
}
setup
assert_complete_any "koji "
sync_after_int
assert_complete_any "koji -"
sync_after_int
teardown