mirror of
https://github.com/openSUSE/osc.git
synced 2024-12-27 02:16:12 +01:00
Daniel Mach
bac875b8f6
The content of dist/ is usually generated during build and is ignored in .gitignore now.
1870 lines
52 KiB
Bash
Executable File
1870 lines
52 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Helper script for completion, usage with tcsh:
|
|
#
|
|
# complete osc 'p@*@`\osc.complete`@'
|
|
#
|
|
# usage with bash
|
|
#
|
|
# complete -C osc.complete osc
|
|
#
|
|
# Author: Werner Fink <werner@suse.de>
|
|
#
|
|
|
|
## For debugging only:
|
|
## Choose your terminal not identical with the test terminal
|
|
## exec 2>/dev/pts/9
|
|
## set -x
|
|
|
|
set -o noclobber
|
|
shopt -s extglob
|
|
typeset -i last
|
|
typeset -i off
|
|
typeset -i count
|
|
typeset -i offset
|
|
typeset -i remove
|
|
typeset -i colon
|
|
typeset -r OIFS="$IFS"
|
|
|
|
# Do not pollute the terminal session with warnings or errors
|
|
exec 2>/dev/null
|
|
|
|
if test "/proc/$PPID/exe" -ef /bin/tcsh ; then
|
|
export COMP_TYPE=63
|
|
export COMP_KEY=9
|
|
export COMP_LINE="${COMMAND_LINE}"
|
|
export COMP_POINT="${#COMMAND_LINE}"
|
|
let colon=0
|
|
else
|
|
COMMAND_LINE="${COMP_LINE:0:$COMP_POINT}"
|
|
let colon=0
|
|
case "$COMP_WORDBREAKS" in
|
|
*:*) let colon=1
|
|
esac
|
|
[[ $COMMAND_LINE =~ \\: ]] && COMMAND_LINE="${COMMAND_LINE//\\:/:}"
|
|
fi
|
|
IFS="${IFS}="
|
|
cmdline=($COMMAND_LINE)
|
|
IFS="$OIFS"
|
|
case "${cmdline[0]}" in
|
|
iosc|isc|osc) ;;
|
|
*) exit 1
|
|
esac
|
|
|
|
let last=${#COMMAND_LINE}
|
|
let last--
|
|
let count=${#cmdline[@]}
|
|
let count--
|
|
test "${COMMAND_LINE:$last}" = " " && let count++
|
|
unset last
|
|
|
|
oscopts=(--version --help --debugger --post-mortem --traceback --http-full-debug
|
|
--debug --apiurl -A --config -c --no-keyring --no-gnome-keyring --verbose --quiet)
|
|
osccmds=(abortbuild add addremove aggregatepac api ar bco bl blt branch branchco
|
|
bsdevelproject bse bugowner build buildconfig buildhist buildhistory buildinfo
|
|
buildlog buildlogtail cat changedevelreq changedevelrequest checkconstraints checkin checkout
|
|
chroot ci co comment commit config copypac cr createincident createrequest creq del
|
|
delete deletereq deleterequest dependson detachbranch develproject di diff
|
|
distributions dists dr dropreq droprequest getbinaries getpac help importsrcpkg
|
|
info init jobhist jobhistory lbl ldiff less linkdiff linkpac linktobranch list
|
|
LL localbuildlog log ls maintained maintainer maintenancerequest man mbranch
|
|
meta metafromspec mkpac mr mv my patchinfo pdiff platforms pr prdiff prjresults
|
|
projdiff projectdiff pull r rbl rblt rbuildlog rbuildlogtail rdelete rdiff
|
|
rebuild rebuildpac releaserequest remotebuildlog remotebuildlogtail remove
|
|
repairlink repairwc repos repositories repourls reqbs reqbugownership
|
|
reqmaintainership reqms request requestbugownership requestmaintainership
|
|
resolved results revert review rm rq rremove se search service setlinkrev
|
|
signkey sm sr st status submitpac submitreq submitrequest tr triggerreason
|
|
undelete unlock up update updatepacmetafromspec user vc whatdependson who whois
|
|
wipebinaries workerinfo)
|
|
oscreq=(list log show accept decline revoke reopen setincident supersede approvenew
|
|
checkout clone)
|
|
oscrev=(show list add accept decline reopen supersede)
|
|
oscmy=(work pkg prj rq sr)
|
|
osccmt=(list create delete)
|
|
osccmtkind=(package project request)
|
|
|
|
oscprj=""
|
|
oscpkg=""
|
|
lnkprj=""
|
|
lnkpkg=""
|
|
apiurl=""
|
|
alias=""
|
|
test -s "${PWD}/.osc/_project" && read -t 1 oscprj < "${PWD}/.osc/_project"
|
|
test -s "${PWD}/.osc/_package" && read -t 1 oscpkg < "${PWD}/.osc/_package"
|
|
if test -s "${PWD}/.osc/_files" ; then
|
|
lnkprj=$(command sed -rn '/<linkinfo/{s@.*[[:blank:]]project="([^"]+)".*@\1@p;}' < "${PWD}/.osc/_files")
|
|
lnkpkg=$(command sed -rn '/<linkinfo/{s@.*[[:blank:]]package="([^"]+)".*@\1@p;}' < "${PWD}/.osc/_files")
|
|
fi
|
|
if test -s "${PWD}/.osc/_apiurl" -a -s ~/.oscrc ; then
|
|
read apiurl < "${PWD}/.osc/_apiurl"
|
|
alias=$(sed -rn '\@^\['${apiurl}'@,\@=@{\@^aliases=@{s@[^=]+=([^,]+),.*@\1@p};}' < ~/.oscrc 2> /dev/null)
|
|
fi
|
|
if test "${cmdline[0]}" = isc ; then
|
|
alias=internal
|
|
fi
|
|
|
|
projects=~/.osc.projects
|
|
command=osc
|
|
|
|
case "${cmdline[1]}" in
|
|
-A|--apiurl)
|
|
if test -n "${cmdline[2]}" -a -s ~/.oscrc ; then
|
|
hints=($(sed -rn '/^(aliases=|\[http)/{s/,/ /g;s/(aliases=|\[|\])//gp}' < ~/.oscrc 2> /dev/null))
|
|
for h in ${hints[@]} ; do
|
|
case "$h" in
|
|
http*)
|
|
tmp=$(sed -rn '\@^\['${h}'@,\@=@{\@^aliases=@{s@[^=]+=([^,]+),.*@\1@p};}' < ~/.oscrc 2> /dev/null)
|
|
if test "${cmdline[2]}" = "$h" ; then
|
|
alias=$tmp
|
|
break
|
|
fi
|
|
;;
|
|
*)
|
|
if test "${cmdline[2]}" = "$h" ; then
|
|
alias=$h
|
|
break
|
|
fi
|
|
esac
|
|
done
|
|
fi
|
|
esac
|
|
|
|
if test -n "$alias" ; then
|
|
projects="${projects}.${alias}"
|
|
command="$command -A $alias"
|
|
fi
|
|
|
|
update_projects_list ()
|
|
{
|
|
if test -s "${projects}" ; then
|
|
typeset -i ctime=$(command date -d "$(command stat -c '%z' ${projects})" +'%s')
|
|
typeset -i now=$(command date -d now +'%s')
|
|
if ((now - ctime > 86400)) ; then
|
|
if tmp=$(mktemp ${projects}.XXXXXX) ; then
|
|
command ${command} ls / >| $tmp
|
|
mv -uf $tmp ${projects}
|
|
fi
|
|
fi
|
|
else
|
|
command ${command} ls / >| "${projects}"
|
|
fi
|
|
}
|
|
|
|
projects ()
|
|
{
|
|
local -a list
|
|
local -a argv
|
|
local -i argc=0
|
|
local arg cur
|
|
for arg; do
|
|
if test $arg == "--" ; then
|
|
let argc++
|
|
break
|
|
fi
|
|
argv[argc++]=$arg
|
|
done
|
|
shift $argc
|
|
update_projects_list
|
|
cur="$1"
|
|
if ((colon)) ; then
|
|
local colon_word
|
|
colon_word=${cur%${cur##*:}}
|
|
if test -n "${cur}" ; then
|
|
builtin compgen -W '`grep -E "^${cur}" ${projects}`' -- "${cur}" | sed -r "s@^${colon_word}@@g"
|
|
else
|
|
builtin compgen -W '`cat ${projects}`' -- "${cur}" | sed -r "s@^${colon_word}@@g"
|
|
fi
|
|
else
|
|
builtin compgen -W "${list[*]}" -- "${cur}"
|
|
fi
|
|
}
|
|
|
|
packages ()
|
|
{
|
|
local -a list
|
|
local -a argv
|
|
local -i argc=0
|
|
local arg cur
|
|
for arg; do
|
|
if test $arg == "--" ; then
|
|
let argc++
|
|
break
|
|
fi
|
|
argv[argc++]=$arg
|
|
done
|
|
shift $argc
|
|
cur="$1"
|
|
if test -n "${cur}" ; then
|
|
list=($(command ${command} ls ${argv[@]}|command grep -E "^${cur}"))
|
|
else
|
|
list=($(command ${command} ls ${argv[@]}))
|
|
fi
|
|
builtin compgen -W "${list[*]}" -- "${cur}"
|
|
}
|
|
|
|
repositories ()
|
|
{
|
|
local -a list
|
|
local -a argv
|
|
local -i argc=0
|
|
local arg
|
|
for arg; do
|
|
if test $arg == "--" ; then
|
|
let argc++
|
|
break
|
|
fi
|
|
argv[argc++]=$arg
|
|
done
|
|
shift $argc
|
|
if test -n "$1" ; then
|
|
list=($(command ${command} meta prj ${argv[@]}|\
|
|
command sed -rn '/<repository/{s@^\s*<.*name="([^"]*)".*@\1@p}'|\
|
|
command sort -u|command grep -E "^$1"))
|
|
else
|
|
list=($(command ${command} meta prj ${argv[@]}|\
|
|
command sed -rn '/<repository/{s@^\s*<.*name="([^"]*)".*@\1@p}'|\
|
|
command sort -u))
|
|
fi
|
|
builtin compgen -W "${list[*]}" -- ${1+"$@"}
|
|
}
|
|
|
|
architectures ()
|
|
{
|
|
local -a list
|
|
local -a argv
|
|
local -i argc=0
|
|
local arg
|
|
for arg; do
|
|
if test $arg == "--" ; then
|
|
let argc++
|
|
break
|
|
fi
|
|
argv[argc++]=$arg
|
|
done
|
|
shift $argc
|
|
if test -n "$1" ; then
|
|
list=($(command ${command} meta prj ${argv[@]}|\
|
|
command sed -rn '/<arch>/{s@^\s*<arch>(.*)</arch>@\1@p}'|\
|
|
command sort -u|command grep -E "^$1"))
|
|
else
|
|
list=($(command ${command} meta prj ${argv[@]}|\
|
|
command sed -rn '/<arch>/{s@^\s*<arch>(.*)</arch>@\1@p}'|\
|
|
command sort -u))
|
|
fi
|
|
builtin compgen -W "${list[*]}" -- ${1+"$@"}
|
|
}
|
|
|
|
targets ()
|
|
{
|
|
local -a targets=()
|
|
local -a argv
|
|
local -i argc=0
|
|
local arg
|
|
for arg; do
|
|
if test $arg == "--" ; then
|
|
let argc++
|
|
break
|
|
fi
|
|
argv[argc++]=$arg
|
|
done
|
|
shift $argc
|
|
let argc=0
|
|
for arg in $(builtin compgen -o filenames -o bashdefault -f -X '.osc' -- ${1+"$@"}); do
|
|
test -d $arg && targets[argc]=$arg/ || targets[argc]=$arg
|
|
let argc++
|
|
done
|
|
builtin compgen -W "${argv[*]}${targets+ ${targets[*]}}" -- ${1+"$@"}
|
|
}
|
|
|
|
users ()
|
|
{
|
|
update_projects_list
|
|
if test -s ${projects} ; then
|
|
command sed -rn "/^home:$1/{ s/^home:([^:]*):.*/\1/p}" ${projects}|command sort -u
|
|
elif test -s ~/.oscrc; then
|
|
command sed -rn '/^(user=)/{s/(user=)//p}' ~/.oscrc|command sort -u
|
|
else
|
|
command id -un
|
|
fi
|
|
}
|
|
|
|
submit ()
|
|
{
|
|
local -i pos=$1
|
|
local target
|
|
|
|
if ((pos == 1)) ; then
|
|
if test -n "${oscprj}" -a -z "${cmdline[2]}" ; then
|
|
builtin compgen -W "${oscprj}" -- "${cmdline[2]}"
|
|
else
|
|
if [[ -n "${oscprj}" && "${oscprj}" =~ "${cmdline[2]}" ]] ; then
|
|
builtin compgen -W "${oscprj}" -- "${cmdline[2]}"
|
|
else
|
|
projects -- "${cmdline[2]}"
|
|
fi
|
|
fi
|
|
elif ((pos == 2)) ; then
|
|
if test -n "${oscpkg}" -a -z "${cmdline[3]}" ; then
|
|
builtin compgen -W "${oscpkg}" -- "${cmdline[3]}"
|
|
else
|
|
if [[ -n "${oscpkg}" && "${oscpkg}" =~ "${cmdline[3]}" ]] ; then
|
|
builtin compgen -W "${oscpkg}" -- "${cmdline[3]}"
|
|
else
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
fi
|
|
fi
|
|
elif ((pos == 3)) ; then
|
|
if test -n "${lnkprj}" -a -z "${cmdline[4]}" ; then
|
|
builtin compgen -W "${lnkprj}" -- "${cmdline[4]}"
|
|
else
|
|
projects -- "${cmdline[4]}"
|
|
fi
|
|
elif ((pos == 4)) ; then
|
|
target="${lnkpkg}"
|
|
target="${target:+$target }$oscpkg"
|
|
if test -n "${target}" ; then
|
|
builtin compgen -W "${target}" -- "${cmdline[5]}"
|
|
else
|
|
packages "${cmdline[4]}" -- "${cmdline[5]}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#
|
|
# The main options
|
|
#
|
|
let remove=0
|
|
while test "${cmdline[1+remove]::1}" = "-" ; do
|
|
case "${cmdline[1+remove]}" in
|
|
-A|--apiurl)
|
|
if ((count-remove == 1)); then
|
|
builtin compgen -W "${oscopts[*]}" -- "${cmdline[1+remove]}"
|
|
exit
|
|
elif ((count-remove == 2)); then
|
|
if test -s ~/.oscrc ; then
|
|
hints=($(sed -rn '/^(aliases=|\[http)/{s/,/ /g;s/(aliases=|\[|\])//gp}' ~/.oscrc|sort -u))
|
|
builtin compgen -W "${hints[*]}" -- "${cmdline[2+remove]}"
|
|
else
|
|
builtin compgen -P https:// -A hostname
|
|
fi
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-c|--config)
|
|
if ((count-remove == 1)); then
|
|
builtin compgen -W "${oscopts[*]}" -- "${cmdline[1+remove]}"
|
|
exit
|
|
elif ((count-remove == 2)); then
|
|
builtin compgen -o filenames -o bashdefault -f -X '.osc' -- "${cmdline[2+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == 1)); then
|
|
builtin compgen -W "${oscopts[*]}" -- "${cmdline[1+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
;;
|
|
*) break
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[0]} ${cmdline[@]:remove+1})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
|
|
case "${cmdline[1]}" in
|
|
add|addremove|ar)
|
|
opts=(--help --recursive)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
else
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count >= 2)) ; then
|
|
targets ${opts[*]} -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
build)
|
|
opts=(--help --oldpackages --disable-cpio-bulk-download --release --baselibs
|
|
--disable-debuginfo --debuginfo --alternative-project --vm-type --linksources
|
|
--local-package --build-uid --userootforbuild --define --without --with
|
|
--ccache --icecream --jobs --root --extra-pkgs --keep-pkgs --prefer-pkgs
|
|
--noservice --no-service --no-verify --nochecks --no-checks --noinit --no-init
|
|
--overlay --rsync-dest --rsync-src --no-changelog --preload --offline --clean)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--alternative-project)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
projects -- "${cmdline[count]}"
|
|
exit
|
|
elif ((count-remove == off+2)) ; then
|
|
repositories "${cmdline[off+1+remove]}" -- "${cmdline[off+2+$remove]}"
|
|
exit
|
|
elif ((count-remove == off+3)) ; then
|
|
architectures "${cmdline[off+1+remove]}" -- "${cmdline[off+3+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=4
|
|
;;
|
|
--define)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
builtin compgen -P "'" -S "'" -W 'macro\ definition' -- "${cmdline[off+1+remvoe]}"
|
|
exit
|
|
elif ((count-remove == off+2)) ; then
|
|
exit
|
|
fi
|
|
let remove+=3
|
|
;;
|
|
--@(root|oldpackages|keep-pkgs|prefer-pkgs|rsync-dest|rsync-src))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
builtin compgen -o dirnames -d -- ${cmdline[off+1+remove]}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--@(release|icecream|jobs|without|with|overlay))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--build-uid)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
builtin compgen -W "399:399 $(id -u):$(id -g)" -- "${cmdline[off+2+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
specs=($(command ls *.spec))
|
|
builtin compgen -W "${opts[*]} ${specs[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
branch|getpac|bco|branchco)
|
|
opts=(--help --revision --new-package --maintenance --noaccess --extend-package-names
|
|
--add-repositories --force --nodevelproject)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
case "${cmdline[1]}" in
|
|
branch) opts[${#opts[@]}]=--checkout
|
|
esac
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--revision)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 6)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[4]}"
|
|
projects -- "${cmdline[4]}"
|
|
elif ((count == 5)) ; then
|
|
packages "${cmdline[4]}" -- "${cmdline[5]}"
|
|
elif ((count == 6)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[6]}"
|
|
fi
|
|
;;
|
|
list|ls|ll|LL)
|
|
opts=(--help --meta --deleted --long --verbose --unexpand --expand --binaries
|
|
--repo --revision --arch)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W 'list ls ll LL' -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(revision|repo|arch))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
packages -u "${cmdline[2]}" "${cmdline[3]}" -- "${cmdline[4]}"
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
less|cat)
|
|
opts=(--help --meta --unexpand --expand --revision)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--revision)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
packages -u "${cmdline[2]}" "${cmdline[3]}" -- "${cmdline[4]}"
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
fi
|
|
;;
|
|
sr|submitpac|submitreq|submitrequest)
|
|
opts=(--help --yes --diff --no-update --no-cleanup --cleanup --separate-requests
|
|
--nodevelproject --supersede --revision)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(revision|supersede))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 6)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count >= 2 && count <= 5)) ; then
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
fi
|
|
submit $((count-1)) 1
|
|
elif ((count == 6)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[6]}"
|
|
fi
|
|
;;
|
|
rq|request|review)
|
|
opts=(--help --involved-projects --exclude-target-project --non-interactive --interactive --edit)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
while test "${cmdline[2+remove]::1}" = "-" ; do
|
|
case "${cmdline[2+remove]}" in
|
|
--exclude-target-project)
|
|
if ((count-remove == 2)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
elif ((count-remove == 3)) ; then
|
|
builtin echo -n EXCLUDE_TARGET_PROJECT
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:2} ${cmdline[@]:remove+2})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
fi
|
|
case "${cmdline[2]}" in
|
|
log|checkout)
|
|
opts=(--help)
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'log checkout' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
builtin echo -n 'ID'
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
revoke|clone)
|
|
opts=(--help)
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'revoke clone' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 4)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
builtin echo -n 'ID'
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[4]}"
|
|
fi
|
|
;;
|
|
setincident)
|
|
opts=(--help)
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'setincident' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 4)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
builtin echo -n 'ID'
|
|
elif ((count == 4)) ; then
|
|
builtin echo -n 'INCIDENT'
|
|
elif ((count == 5)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[5]}"
|
|
fi
|
|
;;
|
|
supersede|add|accept|decline|reopen)
|
|
case "${cmdline[1]}" in
|
|
rq|request) opts=() ;;
|
|
review) opts=(--user --group --project --package)
|
|
esac
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'supersede add accept decline reopen' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
typeset -i supersede=0
|
|
case "${cmdline[2]}" in
|
|
supersede) let supersede=1
|
|
esac
|
|
typeset project=""
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--user)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
user=($(users ${cmdline[off+1+remove]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[off+1+remove]}
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--group)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--project)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
projects -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
else
|
|
project="${cmdline[off+1+remove]}"
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--package)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
test -z "$project" && project=PROJECT_REQUIRED
|
|
packages -u "$project" -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 4)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts+${opts[*]} }ID" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
if ((supersede)) ; then
|
|
builtin echo -n 'SUPERSEDING_ID'
|
|
else
|
|
builtin compgen -W '--message' -- "${cmdline[4]}"
|
|
fi
|
|
elif ((count == 5 && supersede)) ; then
|
|
builtin compgen -W '--message' -- "${cmdline[5]}"
|
|
fi
|
|
;;
|
|
approvenew)
|
|
opts=(--help)
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'approvenew' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 4)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
projects -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[4]}"
|
|
fi
|
|
;;
|
|
show)
|
|
opts=(--diff --brief --source-buildstatus)
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'show' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=("${cmdline[@]:0:off}" "${cmdline[@]:remove+off}")
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]} ID" -- "${cmdline[3]}"
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
list)
|
|
case "${cmdline[1]}" in
|
|
rq|request) opts=(--mine --user --state -days --type --bugowner) ;;
|
|
review) opts=(--user --group --project --package)
|
|
esac
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'list' -- "${cmdline[count]}"
|
|
elif ((count >= 3)) ; then
|
|
typeset project=""
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--user)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
user=($(users ${cmdline[off+1+remove]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[off+1+remove]}
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--group)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--project)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
projects -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
else
|
|
project="${cmdline[off+1+remove]}"
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--package)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
test -z "$project" && project=PROJECT_REQUIRED
|
|
packages -u "$project" -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=("${cmdline[@]:0:off}" "${cmdline[@]:remove+off}")
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
projects -- "${cmdline[3]}"
|
|
fi
|
|
if ((count == 4)) ; then
|
|
packages -u "${cmdline[3]}" -- "${cmdline[4]}"
|
|
fi
|
|
;;
|
|
*)
|
|
if ((count == 2)) ; then
|
|
case "${cmdline[1+remove]}" in
|
|
rq|request) builtin compgen -W "${opts[*]} ${oscreq[*]}" -- "${cmdline[2]}" ;;
|
|
review) builtin compgen -W "${opts[*]} ${oscrev[*]}" -- "${cmdline[2]}" ;;
|
|
esac
|
|
fi
|
|
esac
|
|
;;
|
|
my)
|
|
opts=(--help --maintained --verbose --exclude-project --user --all --maintainer --bugowner)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--user)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
user=($(users ${cmdline[off+1+remove]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[off+1+remove]}
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--exclude-project)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
projects -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]} ${oscmy[*]}" -- "${cmdline[2]}"
|
|
elif ((count >= 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
fi
|
|
;;
|
|
comment)
|
|
opts=(--comment --parent)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]} ${osccmt[*]}" -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]} ${osccmtkind[*]}" -- "${cmdline[3]}"
|
|
fi
|
|
;;
|
|
copypac|linkpac)
|
|
opts=(--help --expand --to-apiurl --revision --keep-develproject --keep-link
|
|
--keep-maintainers --client-side-copy)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(revision|to-apiurl))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
projects -- "${cmdline[4]}"
|
|
elif ((count == 5)) ; then
|
|
packages "${cmdline[4]}" -- "${cmdline[5]}"
|
|
elif ((count == 6)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[6]}"
|
|
fi
|
|
;;
|
|
delete)
|
|
opts=(--help --force)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
else
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count >= 2)) ; then
|
|
targets ${opts[*]} -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
deleterequest|deletereq|droprequest|dropreq|dr)
|
|
typeset -i repository=0
|
|
opts=(--help --repository --message)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count == 2)) ; then
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count >= 3)) ; then
|
|
for ((off=3; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--repository)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
let repository++
|
|
;;
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 4)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 3)) ; then
|
|
if ((repository)) ; then
|
|
builtin compgen -W '--message' -- "${cmdline[4]}"
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
fi
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[4]}"
|
|
fi
|
|
;;
|
|
changedevelrequest|changedevelreq|cr)
|
|
opts=(--help)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[4]}"
|
|
elif ((count == 5)) ; then
|
|
packages "${cmdline[4]}" -- "${cmdline[5]}"
|
|
fi
|
|
;;
|
|
rdiff)
|
|
opts=(--help --unexpand --missingok --change --plain --revision --meta)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(revision|change))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[4]}"
|
|
projects -- "${cmdline[4]}"
|
|
elif ((count == 5)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[5]}"
|
|
packages "${cmdline[4]}" -- "${cmdline[5]}"
|
|
fi
|
|
;;
|
|
ci|commit|checkin)
|
|
opts=(--help --skip-local-service-run --noservice --verbose --skip-validation --force
|
|
--file --message)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--file)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--message) exit ;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
((count >= 3)) && opts[${#opts[@]}]=--message
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
targets ${opts[*]} -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
builtin compgen -W "--message ${opts[*]}" -- "${cmdline[3]}"
|
|
fi
|
|
;;
|
|
co|checkout)
|
|
opts=(--help --limit-size --server-side-source-service-files --source-service-files
|
|
--output-dir --current-dir --meta --unexpand-link --expand-link --revision)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(output-dir|revision))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
;;
|
|
*) break
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count == 4)) ; then
|
|
packages "${cmdline[2]}" "${cmdline[3]}" -- "${cmdline[4]}"
|
|
fi
|
|
;;
|
|
maintainer)
|
|
opts=(--help --role --delete --set-bugowner-request --set-bugowner --all --add
|
|
--devel-project --verbose --nodevelproject --email --bugowner --bugowner-only)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(delete|set-bugowner-request|set-bugowner|add|devel-projec))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--devel-projec)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
projects -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--role)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
builtin compgen -W 'bugowner maintainer involved' -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count > 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
if ((count == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
fi
|
|
fi
|
|
;;
|
|
up|update)
|
|
opts=(--help --limit-size --server-side-source-service-files --source-service-files
|
|
--expand-link --unexpand-link --revision)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
while test "${cmdline[2+remove]::1}" = "-" ; do
|
|
case "${cmdline[2+remove]}" in
|
|
--revision)
|
|
if ((count-remove == 2)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
elif ((count-remove == 3)) && test -z "${cmdline[3+remove]}" ; then
|
|
hint="${cmdline[2+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
fi
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
;;
|
|
meta)
|
|
opts=(--help --delete --set --remove-linking-repositories --create --edit --file
|
|
--force --attribute-project --attribute-defaults --attribute)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(attribute|file))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--set)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
builtin echo -n ATTRIBUTE_VALUES
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W 'prj pkg prjconf user pattern attribute' -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
if test "${cmdline[2]}" = user ; then
|
|
user=($(users ${cmdline[3]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[3]}
|
|
else
|
|
projects -- "${cmdline[3]}"
|
|
fi
|
|
elif ((count == 4)) ; then
|
|
if test "${cmdline[2]}" = pkg ; then
|
|
packages "${cmdline[3]}" -- "${cmdline[4]}"
|
|
elif test "${cmdline[2]}" = attribute ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[4]}"
|
|
packages "${cmdline[3]}" -- "${cmdline[4]}"
|
|
elif test "${cmdline[2]}" = user ; then
|
|
user=($(users ${cmdline[4]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[4]}
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- ${cmdline[4]}
|
|
fi
|
|
elif ((count == 5)) ; then
|
|
builtin compgen -W "${opts[*]}" -- ${cmdline[5]}
|
|
fi
|
|
;;
|
|
wipebinaries)
|
|
opts=(--help --all --unresolvable --broken --build-failed --build-disabled --repo --arch)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(repo|arch))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count-remove == 3)) ; then
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
fi
|
|
;;
|
|
help)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
else
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[2]}"
|
|
fi
|
|
;;
|
|
search)
|
|
opts=(--help --all --binaryversion --baseproject --binary --csv --mine
|
|
--maintained --maintainer --bugowner --involved --version --verbose
|
|
--limit-to-attribute --description --title --project --package
|
|
--substring --exact --repos-baseurl)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
while test "${cmdline[2+remove]::1}" = "-" ; do
|
|
case "${cmdline[2+remove]}" in
|
|
--@(binaryversion|baseproject|limit-to-attribute))
|
|
if ((count-remove == 2)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
elif ((count-remove == 3)) && test -z "${cmdline[3+remove]}" ; then
|
|
hint="${cmdline[2+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--@(maintainer|bugowner|involved))
|
|
if ((count-remove == 2)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
elif ((count-remove == 3)) ; then
|
|
user=($(users ${cmdline[3+remove]}))
|
|
builtin compgen -W "${user[*]}" -- ${cmdline[3+remove]}
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
fi
|
|
if ((count-remove == 2)) ; then
|
|
builtin compgen -W "${opts[*]} SEARCH_TERM" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
pr|prjresults)
|
|
opts=(--help --show-excluded --vertical --repo --arch --name-filter --status-filter
|
|
--xml --csv --hide-legend)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[2]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(repo|arch))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--name-filter)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
builtin echo -n EXPR
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--status-filter)
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) ; then
|
|
status=(disabled failed finished building succeeded broken scheduled unresolvable signing blocked)
|
|
builtin compgen -W "${status[*]}" -- "${cmdline[off+1+remove]}"
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
else
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
r|results)
|
|
opts=(--help --format --csv --xml --watch --verbose --arch --repo --last-build)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(repo|arch|format))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count > 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
diff|linkdiff)
|
|
opts=(--help --missingok --link --plain --revision --change)
|
|
typeset -i link=0
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
case "${cmdline[1]}" in
|
|
linkdiff) let link++ ;;
|
|
esac
|
|
for ((off=2; off<=count; off++)) ; do
|
|
while test "${cmdline[off+remove]::1}" = "-" ; do
|
|
case "${cmdline[off+remove]}" in
|
|
--@(revision|change))
|
|
if ((count-remove == off)); then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
elif ((count-remove == off+1)) && test -z "${cmdline[off+1+remove]}" ; then
|
|
hint="${cmdline[off+remove]^^}"
|
|
builtin echo -n ${hint##*-}
|
|
exit
|
|
fi
|
|
let remove+=2
|
|
;;
|
|
--link)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
let link++
|
|
;;
|
|
-*)
|
|
if ((count-remove == off)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[off+remove]}"
|
|
exit
|
|
fi
|
|
let remove++
|
|
esac
|
|
done
|
|
if ((remove)) ; then
|
|
cmdline=(${cmdline[*]:0:off} ${cmdline[@]:remove+off})
|
|
let count-=remove
|
|
let remove=0
|
|
fi
|
|
done
|
|
fi
|
|
if ((count == 2)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[2]}"
|
|
((link)) && projects -- "${cmdline[2]}"
|
|
elif ((count == 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[3]}"
|
|
((link)) && packages "${cmdline[2]}" -- "${cmdline[3]}"
|
|
elif ((count > 3)) ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
fi
|
|
;;
|
|
workerinfo)
|
|
opts=(--help)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]} ${oscopts[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
if test "${cmdline[count]::1}" = "-" ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
else
|
|
targets ${opts[*]} -- "${cmdline[count]}"
|
|
fi
|
|
fi
|
|
;;
|
|
checkconstraints)
|
|
opts=(--help --ignore-file)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]} ${oscopts[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
if test "${cmdline[count]::1}" = "-" ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
else
|
|
targets ${opts[*]} -- "${cmdline[count]}"
|
|
fi
|
|
fi
|
|
;;
|
|
*)
|
|
opts=(--help)
|
|
if ((count == 1)) ; then
|
|
builtin compgen -W "${osccmds[*]} ${oscopts[*]}" -- "${cmdline[count]}"
|
|
elif ((count >= 2)) ; then
|
|
if test "${cmdline[count]::1}" = "-" ; then
|
|
builtin compgen -W "${opts[*]}" -- "${cmdline[count]}"
|
|
else
|
|
targets ${opts[*]} -- "${cmdline[count]}"
|
|
fi
|
|
fi
|
|
esac
|