#autoload
_arch_namespace () { #double as arch_namespace_categories
local ARCHCMD="$1"
shift
# takes an integer argument specifying how many components:
# 1: category
# 2: branch
# 3: version
# 4: revision
local suffix expl archive=`$ARCHCMD my-default-archive 2> /dev/null`
local trailing_dashes=0
[[ -n $argv[(r)--trailing-dashes] ]] && trailing_dashes=1
local library
[[ -n $argv[(r)--library] ]] && library='library-';
local exclude_library_revisions=0
[[ -n $argv[(r)--exclude-library-revisions] ]] && exclude_library_revisions=1
if [ $1 -gt 1 ] || (( trailing_dashes )); then
suffix=(-q -S --)
fi
if [[ $PREFIX = */* ]]; then
compset -P '*/'
archive=${IPREFIX%/*}
_description -V categories expl "${library:-}categories in $archive"
compadd $suffix "$expl[@]" `$ARCHCMD ${library:-}categories $archive`
elif [ -z $IPREFIX ]; then
local index=$(( words[(i)-A] + 1 ))
(( index < CURRENT )) || index=$(( words[(i)--archive] + 1 ))
(( index < CURRENT )) && archive=$words[$index]
if [ $archive ]; then
_description -V categories expl "${library:-}categories in $archive"
compadd "$expl[@]" $suffix `$ARCHCMD ${library:-}categories $archive`
fi
_arch_archives "$ARCHCMD" -S / ${library:+--library}
fi
if [ $archive ] && [ $1 -gt 1 ] && [[ $PREFIX != *@* ]] \
&& [[ $PREFIX = *--* ]]; then
#this match could be better
_arch_namespace_branches "$ARCHCMD" $(($1 - 1))
fi
}
(( $+functions[_arch_namespace_branches] )) ||
_arch_namespace_branches () {
local ARCHCMD="$1"
shift
local suffix expl
if [ $1 -gt 1 ] || (( $trailing_dashes )); then
suffix=(-q -S --)
fi
if [[ $IPREFIX != *-- ]]; then
compset -P 1 '*--'
local category=${IPREFIX%--}
_description -V branches expl "${library:-}branches"
compadd $suffix "$expl[@]" \
${${(@)$($ARCHCMD ${library:-}branches $category)}##*--}
fi
if [ $1 -gt 1 ] && [[ $IPREFIX = *-- ]] && [[ $PREFIX = *--* ]]; then
_arch_namespace_versions "${ARCHCMD}" $(($1 - 1))
fi
}
(( $+functions[_arch_namespace_versions] )) ||
_arch_namespace_versions () {
local ARCHCMD="$1"
shift
local suffix expl
if [ $1 -gt 1 ]; then
suffix=(-q -S --)
fi
if [[ $IPREFIX != *--*-- ]] || [[ $IPREFIX != */*--*-- ]]; then
compset -P 1 '*--'
local branch=${IPREFIX%--}
_description -V versions expl "${library:-}versions"
compadd $suffix "$expl[@]" \
${${(@)$($ARCHCMD ${library:-}versions $branch)}##*--}
fi
if [ $1 -gt 1 ] && [[ $IPREFIX = *--*-- ]] && ([[ $IPREFIX = */*--*-- ]] \
|| [[ $PREFIX != */* ]]) && [[ $PREFIX = *--* ]]; then
_arch_namespace_revisions "${ARCHCMD}"
fi
}
(( $+functions[_arch_namespace_revisions] )) ||
_arch_namespace_revisions () {
local ARCHCMD="$1"
local expl
if [[ $IPREFIX != *--*--*-- ]] || [[ $IPREFIX != */*--*--*-- ]]; then
compset -P 1 '*--'
local version=${IPREFIX%--}
_description -V revisions expl "${library:-}revisions"
local completions c
completions=(
${${(@)$($ARCHCMD ${library:-}revisions $version)}##*--}
)
(( exclude_library_revisions )) && \
foreach c ($($ARCHCMD library-revisions $version)); do completions[(r)$c]=(); done
compadd "$expl[@]" -a completions
fi
}
_arch_namespace "$@"
Copyright 2K16 - 2K18 Indonesian Hacker Rulez