summaryrefslogtreecommitdiff
path: root/Completion/Redhat/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Redhat/Command')
-rw-r--r--Completion/Redhat/Command/_rpm29
-rw-r--r--Completion/Redhat/Command/_yum10
2 files changed, 24 insertions, 15 deletions
diff --git a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm
index 83922b60c..b2157bd48 100644
--- a/Completion/Redhat/Command/_rpm
+++ b/Completion/Redhat/Command/_rpm
@@ -32,6 +32,8 @@
# complete a RPM package file name
# package_or_file
# the previous two together
+# file_or_package
+# an absolute path to any file (not a package file) or a package
# tags
# complete a tag name
# capability
@@ -66,7 +68,7 @@ _rpm () {
{-g,--group}'[query packages in one of specified groups]'
--fileid --hdrid --pkgid --tid --querybynumber
'--triggeredby'
- '--whatprovides'
+ '--whatprovides:*:provided file:->file_or_package'
'--whatrequires'
)
sopts=${selectopts%\[*}\ --specfile
@@ -122,7 +124,7 @@ _rpm () {
query)
# --dump requires one of -{l,c,d}
# --triggers requires --script
- _arguments -s \
+ _arguments -s -C \
\!{-q,--query} "${commonopts[@]}" "${selectopts[@]}" "${pathopts[@]}" \
"($sopts)--specfile[query specified spec file as if it were a package]" \
'(-i --info)'{-i,--info}'[display package information]' \
@@ -140,10 +142,10 @@ _rpm () {
{--triggers,--triggerscripts}'[show trigger scripts]' && ret=0
;;
setattrs)
- _arguments -s --set{perm,ugids} "${selectopts[@]}" && ret = 0
+ _arguments -s -C --set{perm,ugids} "${selectopts[@]}" && ret=0
;;
verify)
- _arguments -s \!-{y,V} \
+ _arguments -s -C \!-{y,V} \
"${commonopts[@]}" "${selectopts[@]}" "${pathopts[@]}" \
--no{deps,files,scripts,digest,signature,linkto,md5,size,user,group,mtime,mode,rdev} && ret=0
;;
@@ -151,7 +153,7 @@ _rpm () {
tmp=( '(--force)--oldpackage' )
;&
install)
- _arguments -s \!-{i,U} "$tmp[@]" \
+ _arguments -s -C \!-{i,U} "$tmp[@]" \
"${commonopts[@]}" "${pathopts[@]}" \
'--excludepath:file to exclude:_files -/' \
'--relocate:relocate:->relocate' \
@@ -165,7 +167,7 @@ _rpm () {
'*:pkg file:->package_file' && ret=0
;;
uninstall)
- _arguments -s \!-e \
+ _arguments -s -C \!-e \
"${commonopts[@]}" "${pathopts[@]}" \
--{allmatches,justdb,repackage,test} \
--no{deps,scripts,preun,postun,trigger{s,un,postun}} \
@@ -177,7 +179,7 @@ _rpm () {
build_t)
(( $#tmp )) || tmp=( '*:tar file:_files -g "*.(#i)tar(.*|)(-.)"' )
- _arguments -s \
+ _arguments -s -C \
"${commonopts[@]}" "${pathopts[@]}" \
--{short-circuit,clean,nobuild,rmsource,sign,test} \
'--target:specify a build target:->target'\
@@ -187,13 +189,13 @@ _rpm () {
'--timecheck:time check (seconds):' "$tmp[1]" && ret=0
;;
sigcheck)
- _arguments -s \!-K \
+ _arguments -s -C \!-K \
"${commonopts[@]}" \
--no{gpg,pgp,md5,signature,digest} \
'*:package file:->package_file' && ret=0
;;
rebuild)
- _arguments -s \
+ _arguments -s -C \
"${commonopts[@]}" "${pathopts[@]}" \
'*:source package file:->package_file' && ret=0
;;
@@ -246,6 +248,13 @@ _rpm () {
package_or_file)
state=package_file
;;
+ file_or_package)
+ if [[ $PREFIX = /* ]]; then
+ _wanted files expl 'file' _files
+ else
+ state=package
+ fi
+ ;;
package)
if ( [[ ${+_rpms} -eq 0 ]] || _cache_invalid RPMs ) &&
! _retrieve_cache RPMs;
@@ -286,7 +295,7 @@ _rpm () {
;;
capabilities)
_wanted capabilities expl capability compadd \
- ${(f)"$(_call_program capabilities rpm -qa --queryformat '%\{requirename}\\n' 2>/dev/null)"}
+ ${(f)"$(_call_program capabilities rpm -qa --queryformat '%\{requirename}\\n' 2>/dev/null)"} && ret=0
;;
relocate)
if compset -P '*='; then
diff --git a/Completion/Redhat/Command/_yum b/Completion/Redhat/Command/_yum
index ae63364e6..a6983283c 100644
--- a/Completion/Redhat/Command/_yum
+++ b/Completion/Redhat/Command/_yum
@@ -85,15 +85,14 @@ _yum()
fi
}
-# Fills the installed pkg cache
+# Fills the all pkg cache
_yum_all_pkgs()
{
if ( [[ ${+_all_pkgs} -eq 0 ]] || _cache_invalid ALL ) &&
! _retrieve_cache ALL;
then
- local prog="yum -C list all | sed 's/\s.*//' | grep '\.'"
- _all_pkgs=( $(kages $prog 2>/dev/null) )
- _store_cache ALL _all_pkg
+ _all_pkgs=( $(yum -C list all | sed 's/\s.*//' | grep '\.' 2>/dev/null) )
+ _store_cache ALL _all_pkgs
fi
}
@@ -227,8 +226,9 @@ _yum_list_or_info()
else
local subcmd
subcmd="${${listlist[(r)$words[2]:*]%%:*}}"
- # Deal with any aliases
+ # offer packages selected by the subcommand
case $subcmd in
+ all) _yum_all;;
installed) _yum_erase;;
available) _yum_install;;
updates) _yum_update;;