|
1 | 1 | # dpkg(1) and related commands completion -*- shell-script -*- |
2 | 2 |
|
3 | | -if _comp_have_command grep-status; then |
4 | | - _comp_xfunc_dpkg_installed_packages() |
5 | | - { |
6 | | - grep-status -P -e "^${1-}" -a -FStatus 'ok installed' -n -s Package |
7 | | - } |
8 | | - |
9 | | - _comp_xfunc_dpkg_purgeable_packages() |
10 | | - { |
11 | | - grep-status -P -e "^${1-}" -a -FStatus 'ok installed' -o -FStatus 'ok config-files' -n -s Package |
12 | | - } |
13 | | -else |
14 | | - _comp_xfunc_dpkg_installed_packages() |
15 | | - { |
16 | | - command awk -F '\n' -v RS="" " |
17 | | - index(\$1, \"Package: ${1-}\") == 1 && |
| 3 | +# @since 2.12 |
| 4 | +_comp_xfunc_dpkg_installed_packages() |
| 5 | +{ |
| 6 | + local pkgs |
| 7 | + pkgs=$( |
| 8 | + grep-status -P -e "^${cur-}" -a \ |
| 9 | + -FStatus 'ok installed' \ |
| 10 | + -n -s Package 2>/dev/null || |
| 11 | + command awk -F '\n' -v RS="" " |
| 12 | + index(\$1, \"Package: ${cur-}\") == 1 && |
18 | 13 | \$2 ~ /ok installed|half-installed|unpacked|half-configured|^Essential: yes/ { |
19 | 14 | print(substr(\$1, 10)); |
20 | 15 | }" /var/lib/dpkg/status 2>/dev/null |
21 | | - } |
| 16 | + ) |
| 17 | + _comp_compgen -a -- -W '$pkgs' |
| 18 | +} |
22 | 19 |
|
23 | | - _comp_xfunc_dpkg_purgeable_packages() |
24 | | - { |
25 | | - command awk -F '\n' -v RS="" " |
26 | | - index(\$1, \"Package: ${1-}\") == 1 && |
| 20 | +# @since 2.12 |
| 21 | +_comp_xfunc_dpkg_purgeable_packages() |
| 22 | +{ |
| 23 | + local pkgs |
| 24 | + pkgs=$( |
| 25 | + grep-status -P -e "^${cur-}" -a \ |
| 26 | + -FStatus 'ok installed' -o -FStatus 'ok config-files' \ |
| 27 | + -n -s Package 2>/dev/null || |
| 28 | + command awk -F '\n' -v RS="" " |
| 29 | + index(\$1, \"Package: ${cur-}\") == 1 && |
27 | 30 | \$2 ~ /ok installed|half-installed|unpacked|half-configured|config-files|^Essential: yes/ { |
28 | 31 | print(substr(\$1, 10)); |
29 | 32 | }" /var/lib/dpkg/status 2>/dev/null |
30 | | - } |
31 | | -fi |
| 33 | + ) |
| 34 | + _comp_compgen -a -- -W '$pkgs' |
| 35 | +} |
32 | 36 |
|
33 | | -_comp_deprecate_func _comp_dpkg_installed_packages _comp_xfunc_dpkg_installed_packages |
34 | | -_comp_deprecate_func _comp_dpkg_purgeable_packages _comp_xfunc_dpkg_purgeable_packages |
| 37 | +# @since 2.12 |
| 38 | +_comp_xfunc_dpkg_held_packages() |
| 39 | +{ |
| 40 | + local pkgs=$(dpkg --get-selections ${cur:+"$cur}"} | |
| 41 | + awk '{for(i=2;i<=NF;i++){ if($i=="hold"){ print $1;break }}}') |
| 42 | + _comp_compgen -a -- -W '$pkgs' |
| 43 | +} |
| 44 | + |
| 45 | +# @deprecated 2.12 use _comp_xfunc_dpkg_installed_packages instead |
| 46 | +_comp_dpkg_installed_packages() |
| 47 | +{ |
| 48 | + local COMPREPLY=() cur="${1-}" |
| 49 | + # shellcheck disable=SC2119 |
| 50 | + _comp_xfunc_dpkg_installed_packages |
| 51 | + printf "%s\n" "${COMPREPLY[@]}" |
| 52 | +} |
| 53 | +# @deprecated 2.12 use _comp_xfunc_dpkg_purgeable_packages instead |
| 54 | +_comp_dpkg_purgeable_packages() |
| 55 | +{ |
| 56 | + local COMPREPLY=() cur="${1-}" |
| 57 | + # shellcheck disable=SC2119 |
| 58 | + _comp_xfunc_dpkg_purgeable_packages |
| 59 | + printf "%s\n" "${COMPREPLY[@]}" |
| 60 | +} |
35 | 61 |
|
36 | 62 | # Debian dpkg(1) completion |
37 | 63 | # |
@@ -78,11 +104,11 @@ _comp_cmd_dpkg() |
78 | 104 | return |
79 | 105 | ;; |
80 | 106 | --remove | --verify | -${noargopts}[rV]) |
81 | | - COMPREPLY=($(_comp_xfunc_dpkg_installed_packages "$cur")) |
| 107 | + _comp_xfunc_dpkg_installed_packages |
82 | 108 | return |
83 | 109 | ;; |
84 | 110 | --listfiles | --purge | -${noargopts}[LP]) |
85 | | - COMPREPLY=($(_comp_xfunc_dpkg_purgeable_packages "$cur")) |
| 111 | + _comp_xfunc_dpkg_purgeable_packages |
86 | 112 | return |
87 | 113 | ;; |
88 | 114 | --debug | -${noargopts}D) |
@@ -153,7 +179,7 @@ _comp_cmd_dpkg_reconfigure() |
153 | 179 | COMPREPLY=($(compgen -W '--frontend --priority --all --unseen-only |
154 | 180 | --help --showold --force --terse' -- "$cur")) |
155 | 181 | else |
156 | | - COMPREPLY=($(_comp_xfunc_dpkg_installed_packages "$cur")) |
| 182 | + _comp_xfunc_dpkg_installed_packages |
157 | 183 | fi |
158 | 184 | } && |
159 | 185 | complete -F _comp_cmd_dpkg_reconfigure -o default dpkg-reconfigure |
|
0 commit comments