44
55# @since 2.12
66_comp_xfunc_rpm_installed_packages ()
7+ {
8+ _comp_cmd_rpm__installed_packages rpm
9+ }
10+
11+ _comp_cmd_rpm__installed_packages ()
712{
813 if [[ -r /var/log/rpmpkgs &&
914 /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]]; then
@@ -38,13 +43,20 @@ _comp_cmd_rpm__macros()
3843 -- " $cur " ) )
3944}
4045
46+ # shellcheck disable=SC2120
4147_comp_cmd_rpm__buildarchs ()
4248{
4349 COMPREPLY=($( compgen -W " $( " ${1:- rpm} " --showrc | command sed -ne \
4450 ' s/^\s*compatible\s\s*build\s\s*archs\s*:\s*\(.*\)/\1/ p' ) " \
4551 -- " $cur " ) )
4652}
4753
54+ # shellcheck disable=SC2120
55+ _comp_cmd_rpm__configdir ()
56+ {
57+ cfgdir=$( " ${1:- rpm} " --eval ' %{_rpmconfigdir}' 2> /dev/null)
58+ }
59+
4860# rpm(8) completion
4961#
5062_comp_cmd_rpm ()
@@ -147,7 +159,7 @@ _comp_cmd_rpm()
147159 _comp_compgen -- -W ' "${opts[@]}" --allmatches --noscripts
148160 --notriggers --nodeps --test --repackage'
149161 else
150- _comp_xfunc_rpm_installed_packages " $1 "
162+ _comp_cmd_rpm__installed_packages " $1 "
151163 fi
152164 ;;
153165 -q* | --query)
@@ -190,7 +202,7 @@ _comp_cmd_rpm()
190202 --whatrecommends --whatrequires --whatsuggests
191203 --whatsupplements'
192204 elif [[ ${words[*]} != * \ -@ (* ([^ -])a| -all )* ]]; then
193- _comp_xfunc_rpm_installed_packages " $1 "
205+ _comp_cmd_rpm__installed_packages " $1 "
194206 fi
195207 fi
196208 ;;
@@ -216,14 +228,14 @@ _comp_cmd_rpm()
216228 elif [[ ${words[*]} == * \ -@ (* ([^ -])p| -package )* ]]; then
217229 _comp_compgen_filedir ' [rs]pm'
218230 else
219- _comp_xfunc_rpm_installed_packages " $1 "
231+ _comp_cmd_rpm__installed_packages " $1 "
220232 fi
221233 ;;
222234 --resign | --addsign | --delsign)
223235 _comp_compgen_filedir ' [rs]pm'
224236 ;;
225237 --setperms | --setgids)
226- _comp_xfunc_rpm_installed_packages " $1 "
238+ _comp_cmd_rpm__installed_packages " $1 "
227239 ;;
228240 --import | --dbpath | --root)
229241 if [[ $cur == -* ]]; then
@@ -242,30 +254,33 @@ _comp_cmd_rpmbuild()
242254 local cur prev words cword was_split comp_args
243255 _comp_initialize -s -- " $@ " || return
244256
245- local rpm=" ${1% build* } "
246- [[ $rpm == " $1 " ]] || ! type " $rpm " & > /dev/null && rpm=
247-
248257 local noargopts=' !(-*|*[rED]*)'
249- # shellcheck disable=SC2254
258+ # shellcheck disable=SC2119, SC2254
250259 case $prev in
251260 --buildroot | --root | --dbpath | -${noargopts} r)
252261 _comp_compgen_filedir -d
253262 return
254263 ;;
264+ --target | --eval | -${noargopts} E | --buildpolicy)
265+ # Prefer `rpm` in the same dir in utility functions
266+ local pathcmd
267+ pathcmd=$( type -P " $1 " ) && local PATH=${pathcmd%/* } :$PATH
268+ ;;&
255269 --target)
256- _comp_cmd_rpm__buildarchs " $rpm "
270+ _comp_cmd_rpm__buildarchs
257271 return
258272 ;;
259273 --eval | -${noargopts} E)
260- _comp_cmd_rpm__macros " $rpm "
274+ _comp_cmd_rpm__macros
261275 return
262276 ;;
263277 --macros | --rcfile)
264278 _comp_compgen_filedir
265279 return
266280 ;;
267281 --buildpolicy)
268- local cfgdir=$( " $rpm " --eval ' %{_rpmconfigdir}' 2> /dev/null)
282+ local cfgdir
283+ _comp_cmd_rpm__configdir
269284 if [[ $cfgdir ]]; then
270285 COMPREPLY=($( compgen -W " $( command ls " $cfgdir " 2> /dev/null |
271286 command sed -ne ' s/^brp-//p' ) " -- " $cur " ) )
0 commit comments