# builder(1) completion
-#
+
+# retrieve branches from current spec
+_builder_spec_branches() {
+ local cur="$1" spec="$2" res
+ res=$(cvs status -v "$spec" | awk 'NF==3 && /branch:/{print $1}')
+ COMPREPLY=( $( compgen -W "$res" -- "$cur" ) )
+}
+
_builder()
{
local cur prev first
COMPREPLY=()
- cur=${COMP_WORDS[COMP_CWORD]}
+ cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
- if [ $COMP_CWORD -eq 1 ]; then
- # first parameter on line
- case "$cur" in
- *)
-
- COMPREPLY=( $( compgen -W '
- -5 -a5 -n5 -D -V -a -b -ba -bb -bp -bc -bi -bl -bs -B -c -cf -d -g
- -h -l -m -nc -ncs -nd -nm -nu -ns -ns0 -nn -ske -q -r -A -R -RB
- -FRB -sd -sdp -sf -sp -su -T -Tvs -Ts -Tv -Tp -tt -ir -v -u -un
- -U -Upi -np
- ' -- $cur ) )
+ case "$prev" in
+ -@(g|--get))
+ _filedir
+ return 0
+ ;;
+ -r)
+ local spec=*.spec
+ _builder_spec_branches "$cur" "$spec"
+ return 0
+ ;;
+ --with|--without)
+ ./builder --show-avail-bconds automake.spec
+ return 0
;;
- esac
+ esac
- return 0
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '
+ -5 -a5 -n5 -D -V -a -b -ba -bb -bp -bc -bi -bl -bs -B -c -cf -d -g
+ -h -l -m -nc -ncs -nd -nm -nu -ns -ns0 -nn -ske -q -r -A -R -RB
+ -FRB -sd -sdp -sf -sp -su -T -Tvs -Ts -Tv -Tp -tt -ir -v -u -un
+ -U -Upi -np
+ --with --without
+ ' -- $cur ) )
+ else
+ # find which specfile to use
+ specfile=
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -@(?(build)file|f) ]]; then
+ specfile=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+ [ ! -f $specfile ] && return 0
fi
- first=${COMP_WORDS[1]}
-
- case "$first" in
- -@(g|--get))
- _filedir
- ;;
- esac
-
return 0
}
#complete -F _builder builder