From 41e680b1b078f114c7b160fc020395c2063c5e74 Mon Sep 17 00:00:00 2001 From: Arseny Maslennikov Date: Wed, 26 Apr 2023 16:06:28 +0300 Subject: [PATCH] _rpm: optionally complete `rpm -ba` and similar For historical reasons many old users of RPM who build packages have rpmbuild aliased to rpm and type "rpm -ba", etc. We now complete build mode options for `rpm` if e. g. the following zstyle is set to true: % zstyle ':completion::complete:rpm:*:options' build-modes true Not sure at the moment if this makes sense in upstream, though. --- Completion/Redhat/Command/_rpm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm index 1edbae9f0..825bfc932 100644 --- a/Completion/Redhat/Command/_rpm +++ b/Completion/Redhat/Command/_rpm @@ -52,6 +52,7 @@ _rpm () { typeset -A opt_args local ret local -a tmp expl opts commonopts selectopts fileopts pathopts buildopts queryopts + local -a alt_buildmode_opts commonopts=( '(-v --verbose)--quiet[print as little as possible]' @@ -110,6 +111,14 @@ _rpm () { '--dbpath=[specify rpm database path]:path:_directories' ) + # We'd like these to be optionally completable if service is "rpm". + alt_buildmode_opts=( + '(-r -t)-b+[build mode (spec file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_b' + '(-b -t)-r+[build mode (source package)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_r' + '(-b -r)-t+[build mode (tar file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_t' + --{rebuild,recompile}':*:source rpm file:->build_r' + ) + buildopts=( '--rpmfcdebug[debug dependencies generation]' '--buildroot=[override the build root]:build root directory:_directories' @@ -170,14 +179,14 @@ _rpm () { '--setcaps[set capabilities of files in the given package]:*:package:->setattrs' '--restore[restore owner, group, permissions and capabilities of files in the given package]:*:package:->setattrs' ) + if zstyle -t ":completion:${curcontext}:options" build-modes; then + opts+=( $alt_buildmode_opts ) + fi ;; rpmbuild) [[ -prefix -r ]] && pathopts[1]= opts+=( $buildopts - '(-r -t)-b+[build mode (spec file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_b' - '(-b -t)-r+[build mode (source package)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_b' - '(-b -r)-t+[build mode (tar file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages s\:build\ source\ package\ only r\:build\ source\ package\ only\ -\ calculate\ build\ requires)):*:build:->build_t' - --{rebuild,recompile}':*:source rpm file:->build_r' + $alt_buildmode_opts ) ;; rpmspec) -- 2.33.7