diff --git a/NEWS b/NEWS index a4b9bd91..cd9bc7bd 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ 0.120: - support "setlinkrev" for whole projects - support "setlinkrev -u" for removing revision references + - added dist directory with completion scripts for packaging 0.119: - Support new request types diff --git a/dist/complete.csh b/dist/complete.csh new file mode 100644 index 00000000..dbc15a37 --- /dev/null +++ b/dist/complete.csh @@ -0,0 +1,12 @@ +onintr - +if (! $?prompt || ! $?tcsh) goto end +if ($tcsh == 1) goto end +set rev=$tcsh:r +set rel=$rev:e +set pat=$tcsh:e +set rev=$rev:r +if ($rev > 5 && $rel > 1) then + complete osc 'p@*@`/usr/lib/osc/complete`@' +endif +end: + onintr diff --git a/dist/complete.sh b/dist/complete.sh new file mode 100644 index 00000000..fb480a74 --- /dev/null +++ b/dist/complete.sh @@ -0,0 +1,4 @@ +test -z "$BASH_VERSION" && return +complete -o default _nullcommand &> /dev/null || return +complete -r _nullcommand &> /dev/null || return +complete -o default -C /usr/lib/osc/complete osc diff --git a/dist/osc.complete b/dist/osc.complete new file mode 100644 index 00000000..d482bb92 --- /dev/null +++ b/dist/osc.complete @@ -0,0 +1,289 @@ +#!/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 +# + +set -o noclobber +shopt -s extglob +typeset -i last +typeset -i count + +test "/proc/$PPID/exe" -ef /bin/tcsh || COMMAND_LINE="$COMP_LINE" +cmdline=($COMMAND_LINE) +test "${cmdline[0]}" != "osc" && exit 1 + +let last=${#COMMAND_LINE} +let last-- +let count=${#cmdline[@]} +let count-- +test "${COMMAND_LINE:$last}" = " " && let count++ +unset last + +osccmds=(abortbuild add addremove aggregatepac branch build buildconfig \ + buildhistory buildhist buildinfo buildlog bl cat checkout co commit \ + checkin ci copypac delete del remove rm deletepac deleteprj diff di \ + getbinaries help importsrcpkg info init jobhistory jobhist linkpac list \ + log ls maintainer meta mkpac platforms prjresults pr rdiff rebuildpac \ + remotebuildlog rbl repos repourls req resolved results results_meta rlog \ + rprjresults rresults search status sr submitreq update up updatepacmetafromspec \ + metafromspec wipebinaries) +oscreq=(create list log show accept decline delete revoke) + +oscprj="" +oscpkg="" +lnkprj="" +lnkpkg="" +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 '/ 86400)) && command osc ls >| ~/.osc.projects +else + command osc ls >| ~/.osc.projects +fi + +submit () +{ + local -i pos=$1 + local -i off=$2 + local target + + if ((pos == 1)) ; then + if test -z "${cmdline[$((3+off))]}" -a -n "${oscprj}" ; then + builtin compgen -W "${oscprj}" + else + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[$((3+off))]}" + fi + fi + if ((pos == 2)) ; then + if test -z "${cmdline[$((4+off))]}" -a -n "${oscpkg}" ; then + builtin compgen -W "${oscpkg}" + else + builtin compgen -W "$(command osc ls "${cmdline[$((3+off))]}")" -- "${cmdline[$((4+off))]}" + fi + fi + if ((pos == 3)) ; then + if test -z "${cmdline[$((5+off))]}" -a -n "${lnkprj}" ; then + builtin compgen -W "${lnkprj}" + else + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[$((5+off))]}" + fi + fi + if ((pos == 4)) ; then + target="${lnkpkg}" + target="${target:+$target }$oscpkg" + if test -n "${target}" ; then + builtin compgen -W "${target}" -- "${cmdline[$((6+off))]}" + else + builtin compgen -W "$(command osc ls "${cmdline[$((5+off))]}")" -- "${cmdline[$((6+off))]}" + fi + fi +} + +case "${cmdline[1]}" in +add|addremove) + if ((count == 1)) ; then + builtin compgen -W 'add addremove' -- "${cmdline[1]}" + else + for x in $(builtin compgen -f -X '.osc' -- "${cmdline[2]}"); do + test -d $x && builtin echo $x/ || builtin echo $x + done + fi + ;; +branch) + if ((count == 1)) ; then + builtin compgen -W 'branch' -- "${cmdline[1]}" + fi + case "${cmdline[2]}" in + --nodevelproject) + if ((count == 3)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[3]}" + fi + if ((count == 4)) ; then + builtin compgen -W "$(command osc ls "${cmdline[3]}")" -- "${cmdline[4]}" + fi + ;; + -*) builtin compgen -W '--nodevelproject' -- "${cmdline[3]}" ;; + *) + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(command osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + esac + ;; +list|ls) + if ((count == 1)) ; then + builtin compgen -W 'list ls' -- "${cmdline[1]}" + fi + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(command osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + ;; +sr|submitreq) + if ((count == 1)) ; then + builtin compgen -W 'sr submitreq' -- "${cmdline[1]}" + fi + case "${cmdline[2]}" in + create) + case "${cmdline[3]}" in + --nodevelproject) + submit $((count - 3)) 1 ;; + -*) builtin compgen -W '--nodevelproject' -- "${cmdline[3]}" ;; + *) submit $((count - 2)) 0 ;; + esac + ;; + accept|decline|delete|revoke|log) + if ((count == 3)) ; then + builtin echo -n 'ID' + fi + ;; + show) + if ((count == 3)) ; then + builtin compgen -W '--diff' -- "${cmdline[3]}" + else + builtin echo -n 'ID' + fi + ;; + list) + if ((count == 3)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[3]}" + fi + if ((count == 4)) ; then + builtin compgen -W "$(command osc ls "${cmdline[3]}")" -- "${cmdline[4]}" + fi + ;; + *) + ((count == 2)) && builtin compgen -W "$(builtin echo ${oscreq[@]})" -- "${cmdline[2]}" + esac + ;; +copypac|linkpac) + if ((count == 1)) ; then + builtin compgen -W 'copypac linkpac' -- "${cmdline[1]}" + fi + case "${cmdline[2]}" in + *) + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + if ((count == 4)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[4]}" + fi + if ((count == 5)) ; then + builtin compgen -W "$(command osc ls "${cmdline[4]}")" -- "${cmdline[5]}" + fi + esac + ;; +rdiff) + if ((count == 1)) ; then + builtin compgen -W 'rdiff' -- "${cmdline[1]}" + fi + case "${cmdline[2]}" in + *) + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + if ((count == 4)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -P --oldprj= -- "${cmdline[4]#*=}" + fi + if ((count == 5)) ; then + builtin compgen -W "$(command osc ls "${cmdline[4]}")" -P --oldpkg= -- "${cmdline[5]#*=}" + fi + esac + ;; +ci|commit|checkin) + if ((count == 1)) ; then + builtin compgen -W 'ci commit checkin' -- "${cmdline[1]}" + else + for x in $(builtin compgen -f -X '.osc' -- "${cmdline[2]}"); do + test -d $x && builtin echo $x/ || builtin echo $x + done + fi + ;; +co|checkout) + if ((count == 1)) ; then + builtin compgen -W 'co checkout' -- "${cmdline[1]}" + fi + if ((count == 1)) ; then + builtin compgen -W 'co checkout' -- "${cmdline[1]}" + else + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(command osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + fi + ;; +up|update) + if ((count == 1)) ; then + builtin compgen -W 'up update' -- "${cmdline[1]}" + fi + if ((count == 2)) ; then + builtin compgen -W '--expand-link --unexpand-link' -- "${cmdline[2]}" + fi + ;; +meta) + if ((count == 1)) ; then + builtin compgen -W 'meta metafromspec' -- "${cmdline[1]}" + fi + if ((count == 2)) ; then + builtin compgen -W 'prj pkg' -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[3]}" + fi + if ((count == 4)) && test "${cmdline[2]}" = pkg ; then + builtin compgen -W "$(command osc ls "${cmdline[3]}")" -- "${cmdline[4]}" + fi + if ((count == 5)) ; then + builtin compgen -W '--edit -e' -- "${cmdline[5]}" + fi + ;; +wipebinaries) + if ((count == 1)) ; then + builtin compgen -W 'wipebinaries' -- "${cmdline[1]}" + fi + if ((count == 2)) ; then + builtin compgen -W "$(command cat ~/.osc.projects)" -- "${cmdline[2]}" + fi + if ((count == 3)) ; then + builtin compgen -W "$(command osc ls "${cmdline[2]}")" -- "${cmdline[3]}" + fi + if ((count == 4)) ; then + builtin compgen -W "--expansion --broken --build-failed --build-disabled" -- "${cmdline[4]}" + fi + ;; +help) + if ((count == 1)) ; then + builtin compgen -W 'help' -- "${cmdline[1]}" + fi + ((count == 2)) && builtin compgen -W "$(builtin echo ${osccmds[@]})" -- "${cmdline[2]}" + ;; +*) + ((count == 1)) && builtin compgen -W "$(builtin echo ${osccmds[@]})" -- "${cmdline[1]}" +esac