blob: e5ea16360dfc03902d95b9f93d29a17ff79f783e (
plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# Debian aptitude(1) completion -*- shell-script -*-
_have grep-status && {
_comp_dpkg_hold_packages()
{
grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package
}
} || {
_comp_dpkg_hold_packages()
{
command grep -B 2 'hold' /var/lib/dpkg/status |
awk "/Package: $1/ { print \$2 }"
}
}
_aptitude()
{
local cur prev words cword
_init_completion || return
local special i
for ((i = 1; i < ${#words[@]} - 1; i++)); do
if [[ ${words[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full|safe)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag|versions) ]]; then
special=${words[i]}
break
fi
done
if [[ -v special ]]; then
case $special in
install | hold | markauto | unmarkauto | dist-upgrade | full-upgrade | \
safe-upgrade | download | show | changelog | why | why-not | build-dep | \
add-user-tag | remove-user-tag | versions)
COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
return
;;
purge | remove | reinstall | forbid-version)
COMPREPLY=(
$(_xfunc dpkg _comp_dpkg_installed_packages "$cur"))
return
;;
unhold)
COMPREPLY=($(_comp_dpkg_hold_packages "$cur"))
return
;;
esac
fi
case $prev in
# don't complete anything if these options are found
autoclean | clean | forget-new | search | upgrade | update | keep-all)
return
;;
-!(-*)S)
_filedir
return
;;
--display-format | --width | -!(-*)[wFo])
return
;;
--sort | -!(-*)O)
COMPREPLY=($(compgen -W 'installsize installsizechange debsize
name priority version' -- "$cur"))
return
;;
--target-release | --default-release | -!(-*)t)
COMPREPLY=($(apt-cache policy |
command grep "release.o=Debian,a=$cur" |
command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2>/dev/null))
return
;;
esac
if [[ $cur == -* ]]; then
local opts=" $($1 --help 2>&1 | command sed -e \
's/--with(out)-recommends/--without-recommends\n--with-recommends/' |
_parse_help - | tr '\n' ' ') "
# Exclude some mutually exclusive options
for i in "${words[@]}"; do
[[ $i == -u ]] && opts=${opts/ -i / }
[[ $i == -i ]] && opts=${opts/ -u / }
done
# Do known short -> long replacements; at least up to 0.8.12, --help
# outputs mostly only short ones.
COMPREPLY=($opts)
for i in "${!COMPREPLY[@]}"; do
case ${COMPREPLY[i]} in
-h) COMPREPLY[i]=--help ;;
-s) COMPREPLY[i]=--simulate ;;
-d) COMPREPLY[i]=--download-only ;;
-P) COMPREPLY[i]=--prompt ;;
-y) COMPREPLY[i]=--assume-yes ;;
-F) COMPREPLY[i]=--display-format ;;
-O) COMPREPLY[i]=--sort ;;
-W) COMPREPLY[i]=--show-why ;;
-w) COMPREPLY[i]=--width ;;
-V) COMPREPLY[i]=--show-versions ;;
-D) COMPREPLY[i]=--show-deps ;;
-v) COMPREPLY[i]=--verbose ;;
-t) COMPREPLY[i]=--target-release ;;
-q) COMPREPLY[i]=--quiet ;;
esac
done
COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur"))
else
COMPREPLY=($(compgen -W 'update upgrade safe-upgrade forget-new
clean autoclean install reinstall remove hold unhold purge markauto
unmarkauto why why-not dist-upgrade full-upgrade download search
show forbid-version changelog keep keep-all build-dep add-user-tag
remove-user-tag versions' -- "$cur"))
fi
} &&
complete -F _aptitude -o default aptitude aptitude-curses
# ex: filetype=sh
|