blob: 171293887e7cc9846eaeb01978347c80b1305dc2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#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 "$@"
|