From patchwork Wed Mar 3 22:44:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noah Evans X-Patchwork-Id: 27432 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 4C46727BC4F; Wed, 3 Mar 2021 22:47:01 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, FREEMAIL_FROM,FREEMAIL_REPLYTO_END_DIGIT,HTML_MESSAGE, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS, T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id DC22227BC50 for ; Wed, 3 Mar 2021 22:46:50 +0000 (GMT) Received: from localhost ([::1]:40516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHaGY-0001la-0P for patchwork@mira.cbaines.net; Wed, 03 Mar 2021 17:46:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55578) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHaFn-0001KT-29 for guix-patches@gnu.org; Wed, 03 Mar 2021 17:46:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:45626) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lHaFm-0002G5-At for guix-patches@gnu.org; Wed, 03 Mar 2021 17:46:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lHaFm-0007j7-9J for guix-patches@gnu.org; Wed, 03 Mar 2021 17:46:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#46907] [PATCH] Update zsh completion file for guix command. Resent-From: Noah Evans Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 03 Mar 2021 22:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 46907 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 46907@debbugs.gnu.org X-Debbugs-Original-To: "guix-patches@gnu.org" Received: via spool by submit@debbugs.gnu.org id=B.161481150429612 (code B ref -1); Wed, 03 Mar 2021 22:46:02 +0000 Received: (at submit) by debbugs.gnu.org; 3 Mar 2021 22:45:04 +0000 Received: from localhost ([127.0.0.1]:57170 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHaEq-0007hY-Dn for submit@debbugs.gnu.org; Wed, 03 Mar 2021 17:45:04 -0500 Received: from lists.gnu.org ([209.51.188.17]:39660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHaEo-0007hQ-AM for submit@debbugs.gnu.org; Wed, 03 Mar 2021 17:45:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHaEo-0000bs-1t for guix-patches@gnu.org; Wed, 03 Mar 2021 17:45:02 -0500 Received: from mail-40134.protonmail.ch ([185.70.40.134]:34709) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHaEh-0001kq-5D for guix-patches@gnu.org; Wed, 03 Mar 2021 17:45:01 -0500 Date: Wed, 03 Mar 2021 22:44:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1614811488; bh=qRsCWqiKifxw46QDq3XJjbY+u4XO6YQOqvRujm9VFqs=; h=Date:To:From:Reply-To:Subject:From; b=nLaD+UaP9+5AU/iWVeFwGXGIVdiA/ErrmRtfz+mirVIceyWW8Rq5p3fGNjO5BP3x3 IflSJXzWYMAB/D84ShbMAO56NlxQ/dAZ6V1Kzcby/7UuON+LoIvbBne+mCfo4kNpAu rKyHIh71NrQGnLftqOSjxPukuumfLCOzEVWvyjWU= Message-ID: MIME-Version: 1.0 Received-SPF: pass client-ip=185.70.40.134; envelope-from=clonex100@protonmail.com; helo=mail-40134.protonmail.ch X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, FREEMAIL_REPLYTO_END_DIGIT=0.25, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" Reply-to: Noah Evans X-ACL-Warn: , Noah Evans via Guix-patches X-Patchwork-Original-From: Noah Evans via Guix-patches via From: Noah Evans X-getmail-retrieved-from-mailbox: Patches From a8fad11ae73c6256954c1ac06483a72280ad0381 Mon Sep 17 00:00:00 2001 From: Noah Evans Date: Wed, 3 Mar 2021 17:38:18 -0500 Subject: [PATCH] Update zsh completion file. --- etc/completion/zsh/_guix | 405 +++++++++++++++++++++++++++++---------- 1 file changed, 305 insertions(+), 100 deletions(-) -- 2.30.1 diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix index aa1a859e0d..75fac9c509 100644 --- a/etc/completion/zsh/_guix +++ b/etc/completion/zsh/_guix @@ -68,21 +68,24 @@ _guix_list_installed_packages() (( $+functions[_guix_build] )) || _guix_build() { _arguments \ - '--expression=[build the package matching EXPR]:EXPR' \ - '--file=[build the package matching code evaluated from FILE]:FILE:_files' \ - '--source[build the packages source derivations]' \ - '--sources=[build source derivations]:TYPE:(all package transitive)' \ - '--system=[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ + {-e,--expression=}'[build the package or derivation EXPR evaluates to]:EXPR' \ + {-f,--file=}'[build the package or derivation that the code within FILE evaluates to]:FILE:_files' \ + {-m,--manifest=}'[build the packages that the manifest given in FILE evaluates to]:FILE:_files' \ + {-S,--source}'[build the packages source derivations]' \ + '--sources=[build source derivations]:TYPE:(package all transitive)' \ + {-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ '--target=[cross-build for TRIPLET (e.g. "armel-linux-gnu")]:TRIPLET' \ - '--derivations[return the derivation paths of the given packages]' \ + {-d,--derivations}'[return the derivation paths of the given packages]' \ '--check[rebuild items to check for non-determinism issues]' \ - '--root=[symlink result to FILE and register it as GC root]:FILE:_files' \ - '--quiet[do not show the build log]' \ + '--repair[repair the specified items]' \ + {-r,--root=}'[make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + {-q,--quiet}'[do not show the build log]' \ '--log-file[return the log file names for the given derivations]' \ - '--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \ - '--keep-failed[keep build tree of failed builds]' \ - '--keep-going[keep going when some of the derivations fail]' \ - '--dry-run[do not build the derivations]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -\' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ '--fallback[fall back to building when the substituter fails]' \ '--no-substitutes[build instead of resorting to pre-built substitutes]' \ '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ @@ -90,12 +93,12 @@ _guix_list_installed_packages() '--no-offload[do not attempt to offload builds]' \ '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ - '--verbosity=[use the given verbosity LEVEL]:LEVEL' \ '--rounds=[build N times in a row to detect non-determinism]:N' \ - '--cores=[allow the use of up to N CPU cores for the build]:N' \ - '--max-jobs=[allow at most N build jobs]:N' \ - '--with-source=[use SOURCE when building the corresponding package]:SOURCE' \ - '--with-input=[replace dependency PACKAGE by REPLACEMENT]:PACKAGE=REPLACEMENT' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + '--help-transform[list package transformation options not shown here]' \ + {-V,--version}'[display version information and exit]' \ '*:package:->packages' if [[ "$state" = packages ]]; then @@ -107,7 +110,9 @@ _guix_list_installed_packages() (( $+functions[_guix_challenge] )) || _guix_challenge() { _arguments \ - '--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \ + '--substitute-urls=[compare build results with those at URLS]:URLS:_urls' \ + '--diff=[show differences according to MODE]:MODE' \ + {-v,--verbose}'[show details about successful comparisons]' \ '*:package:->packages' if [[ "$state" = packages ]]; then @@ -126,7 +131,11 @@ _guix_list_installed_packages() (( $+functions[_guix_download] )) || _guix_download() { _arguments \ - '--format=[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \ + {-f,--format=}'[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \ + {-H,--hash=}'[use the given hash ALGORITHM]:ALGORITHM' \ + '--no-check-certificate[do not validate the certificate of HTTPS servers ]' \ + {-o,--output=}'[download to FILE]:FILE:_files' \ + {-V,--version}'[display version information and exit]' \ '1:URL:_urls' } @@ -139,21 +148,29 @@ _guix_list_installed_packages() (( $+functions[_guix_environment] )) || _guix_environment() { _arguments \ - '--expression=[create environment for the package evaluated from EXPR]:EXPR' \ - '--load=[create environment for the package evaluated from FILE]:FILE:_files' \ - '--ad-hoc[include all specified packages, not only their inputs]' \ + {-e,--expression=}'[create environment for the package that EXPR evaluates to]:EXPR' \ + {-l,--load=}'[create environment for the package that the code within FILE evaluates to]:FILE:_files' \ + {-m,--manifest=}'[create environment with the manifest from FILE]:FILE:_files' \ + {-p,--profile=}'[create environment from profile at PATH]:PATH:_files -/' \ + '--ad-hoc[include all specified packages in the environment instead of only their inputs]' \ '--pure[unset existing environment variables]' \ + {-E,--preserve=}'[preserve environment variables that match REGEXP]:REGEXP' \ '--search-paths[display needed environment variable definitions]' \ - '--system=[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ - '--container[run command within an isolated container]' \ - '--network[allow containers to access the network]' \ - '--share=[share writable host file system according to SPEC]:SPEC' \ - '--expose=[expose read-only host file system according to SPEC]:SPEC' \ + {-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ + {-r,--root=}'[make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \ + {-C,--container}'[run command within an isolated container]' \ + {-N,--network}'[allow containers to access the network]' \ + {-P,--link-profile}'[link environment profile to ~/.guix-profile within an isolated container]' \ + {-u,--user=}'[instead of copying the name and home of the current user into an isolated container, use the name USER with home directory /home/USER]:USER:_users' \ + '--no-cwd[do not share current working directory with an isolated container]' \ + '--share=[for containers, share writable host file system according to SPEC]:SPEC' \ + '--expose=[for containers, expose read-only host file system according to SPEC]:SPEC' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ '--bootstrap[use bootstrap binaries to build the environment]' \ - '--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \ - '--keep-failed[keep build tree of failed builds]' \ - '--keep-going[keep going when some of the derivations fail]' \ - '--dry-run[do not build the derivations]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ '--fallback[fall back to building when the substituter fails]' \ '--no-substitutes[build instead of resorting to pre-built substitutes]' \ '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ @@ -161,10 +178,12 @@ _guix_list_installed_packages() '--no-offload[do not attempt to offload builds]' \ '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ - '--verbosity=[use the given verbosity LEVEL]:LEVEL' \ '--rounds=[build N times in a row to detect non-determinism]:N' \ - '--cores=[allow the use of up to N CPU cores for the build]:N' \ - '--max-jobs=[allow at most N build jobs]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + '--help-transform[list package transformation options not shown here]' \ + {-V,--version}'[display version information and exit]' \ '*:package:->packages' if [[ "$state" = packages ]]; then @@ -177,27 +196,39 @@ _guix_list_installed_packages() (( $+functions[_guix_gc] )) || _guix_gc() { _arguments \ - '--collect-garbage=[collect at least MIN bytes of garbage]:MIN' \ - '--free-space=[attempt to reach FREE available space in the store]:FREE' \ - '--delete[attempt to delete PATHS]' \ + {-C,--collect-garbage=}'[collect at least MIN bytes of garbage]:MIN' \ + {-F,--free-space=}'[attempt to reach FREE available space in the store]:FREE' \ + {-d,--delete-generations=}'[delete profile generations matching PATTERN]:PATTERN' \ + {-D,--delete}'[attempt to delete PATHS]' \ + '--list-roots[list the users GC roots]' \ + '--list-busy[list store items used by running processes]' \ '--optimize[optimize the store by deduplicating identical files]' \ '--list-dead[list dead paths]' \ '--list-live[list live paths]' \ '--references[list the references of PATHS]' \ - '--requisites[list the requisites of PATHS]' \ + {-R,--requisites}'[list the requisites of PATHS]' \ '--referrers[list the referrers of PATHS]' \ + '--derivers[list the derivers of PATHS]' \ '--verify=[verify the integrity of the store]:OPTS:(contents repair)' \ '--list-failures[list cached build failures]' \ '--clear-failures[remove PATHS from the set of cached failures]' \ - '1:PATH:_dirs' + {-V,--version}'[display version information and exit]:V' \ + '1:PATH:_files -/' } (( $+functions[_guix_graph] )) || _guix_graph() { _arguments \ - '--type=[represent nodes of the given TYPE]:TYPE:->types' \ + {-b,--backend=}'[produce a graph with the given backend TYPE]:TYPE:->types' \ + '--list-backends[list the available graph backends]' \ + {-t,--type=}'[represent nodes of the given TYPE]:TYPE:->types' \ '--list-types[list the available graph types]' \ - '--expression=[consider the package EXPR evaluates to]:EXPR' \ + '--path[display the shortest path between the given nodes]' \ + {-e,--expression=}'[consider the package EXPR evaluates to]:EXPR' \ + {-s,--system=}'[consider the graph for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + '--help-transform[list package transformation options not shown here]' \ + {-V,--version}'[display version information and exit]' \ '1:PACKAGE:->packages' case "$state" in @@ -216,8 +247,11 @@ _guix_list_installed_packages() (( $+functions[_guix_hash] )) || _guix_hash() { _arguments \ - '--format=[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \ - '--recursive[compute the hash on FILE recursively]'\ + {-x,--exclude-vcs}'[exclude version control directories]' \ + {-H,--hash=}'[use the given hash ALGORITHM]:ALGORITHM' \ + {-f,--format=}'[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \ + {-r,--recursive}'[compute the hash on FILE recursively]' \ + {-V,--version}'[display version information and exit]' \ '1:FILE:_files' } @@ -236,8 +270,12 @@ _guix_list_installed_packages() (( $+functions[_guix_lint] )) || _guix_lint() { _arguments \ - '--checkers=[only run the specified checkers]:CHECKERS:->checkers' \ - '--list-checkers[display the list of available lint checkers]' \ + {-c,--checkers=}'[only run the specified checkers]:CHECKERS:->checkers' \ + {-x,--exclude=}'[exclude the specified checkers]:CHECKERSS:->checkers' \ + {-n,--no-network}'[only run checkers that do not access the network]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-l,--list-checkers}'[display the list of available lint checkers]' \ + {-V,--version}'[display version information and exit]' \ '1:PACKAGE:->packages' case "$state" in @@ -255,29 +293,31 @@ _guix_list_installed_packages() (( $+functions[_guix_package] )) || _guix_package() { _arguments \ - '--install[install one or more packages]: :->install' \ - '--install-from-expression=[install the package EXP evaluates to]:EXP' \ - '--install-from-file=[install the package evaluated from FILE]:FILE:_files' \ - '--remove[remove one or more packages]: :->remove' \ - '--upgrade=[upgrade all the installed packages matching REGEXP]:REGEXP' \ - '--manifest=[create a new profile generation from FILE]:FILE:_files' \ + {-i,--install}'[install one or more packages]: :->install' \ + {-e,--install-from-expression=}'[install the package EXP evaluates to]:EXP' \ + {-f,--install-from-file=}'[install the package evaluated from FILE]:FILE:_files' \ + {-r,--remove}'[remove one or more packages]: :->remove' \ + {-u,--upgrade=}'[upgrade all the installed packages matching REGEXP]:REGEXP' \ + {-m,--manifest=}'[create a new profile generation from FILE]:FILE:_files' \ '--do-not-upgrade=[do not upgrade any packages matching REGEXP]:REGEXP' \ '--roll-back[roll back to the previous generation]' \ '--search-paths=[display needed environment variable definitions]:KINDS' \ - '--list-generations=[list generations matching PATTERN]:PATTERN' \ - '--delete-generations=[delete generations matching PATTERN]:PATTERN' \ - '--switch-generation=[switch to a generation matching PATTERN]:PATTERN' \ - '--profile=[use PROFILE instead of the default profile]:PROFILE' \ + '--export-manifest[print a manifest for the chosen profile]' \ + '--export-channels[print channels for the chosen profile]' \ + {-l,--list-generations=}'[list generations matching PATTERN]:PATTERN' \ + {-d,--delete-generations=}'[delete generations matching PATTERN]:PATTERN' \ + {-S,--switch-generation=}'[switch to a generation matching PATTERN]:PATTERN' \ + {-p,--profile}'[use PROFILE instead of the default profile]:PROFILE:_files -/' \ + '--list-profiles[list the profiles]' \ '--bootstrap[use the bootstrap Guile to build the profile]' \ - '--verbose[produce verbose output]' \ - '--search=[search in synopsis and description using REGEXP]:REGEXP' \ - '--list-installed=[list installed packages matching REGEXP]:REGEXP' \ - '--list-available=[list available packages matching REGEXP]:REGEXP' \ + {-s,--search=}'[search in synopsis and description using REGEXP]:REGEXP' \ + {-I,--list-installed=}'[list installed packages matching REGEXP]:REGEXP' \ + {-A,--list-available=}'[list available packages matching REGEXP]:REGEXP' \ '--show=[show details about a package]: :->show' \ - '--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \ - '--keep-failed[keep build tree of failed builds]' \ - '--keep-going[keep going when some of the derivations fail]' \ - '--dry-run[do not build the derivations]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ '--fallback[fall back to building when the substituter fails]' \ '--no-substitutes[build instead of resorting to pre-built substitutes]' \ '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ @@ -287,10 +327,14 @@ _guix_list_installed_packages() '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ '--verbosity=[use the given verbosity LEVEL]:LEVEL' \ '--rounds=[build N times in a row to detect non-determinism]:N' \ - '--cores=[allow the use of up to N CPU cores for the build]:N' \ - '--max-jobs=[allow at most N build jobs]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ '--with-source=[use SOURCE when building the corresponding package]:SOURCE' \ - '--with-input=[replace dependency PACKAGE by REPLACEMENT]:PACKAGE=REPLACEMENT' + '--with-input=[replace dependency PACKAGE by REPLACEMENT]:PACKAGE=REPLACEMENT' \ + '--allow-collisions[do not treat collisions in the profile as an error]' \ + '--debug=[produce debugging output at LEVEL]' \ + '--help-transform[list package transformation options not shown here]' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]' case "$state" in install|show) @@ -304,37 +348,178 @@ _guix_list_installed_packages() esac } +(( $+functions[_guix_install] )) || _guix_install() +{ + _arguments \ + {-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ + '--fallback[fall back to building when the substituter fails]' \ + '--no-substitutes[build instead of resorting to pre-built substitutes]' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ + '--no-grafts[do not graft packages]' \ + '--no-offload[do not attempt to offload builds]' \ + '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ + '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ + '--rounds=[build N times in a row to detect non-determinism]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + '--help-transform[list package transformation options not shown here]' \ + {-V,--version}'[display version information and exit]' \ + '*:package:->packages' + + if [[ "$state" = packages ]]; then + _guix_list_available_packages + compadd -a -- _guix_available_packages + fi +} + +(( $+functions[_guix_remove] )) || _guix_remove() +{ + _arguments \ + {-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ + '--fallback[fall back to building when the substituter fails]' \ + '--no-substitutes[build instead of resorting to pre-built substitutes]' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ + '--no-grafts[do not graft packages]' \ + '--no-offload[do not attempt to offload builds]' \ + '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ + '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ + '--rounds=[build N times in a row to detect non-determinism]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + {-V,--version}'[display version information and exit]' \ + '*:package:->packages' + + if [[ "$state" = packages ]]; then + _guix_list_installed_packages + compadd -a -- _guix_installed_packages + fi +} + +(( $+functions[_guix_upgrade] )) || _guix_upgrade() +{ + _arguments \ + {-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + '--do-not-upgrade=[do not upgrade any packages matching REGEXP]:REGEXP' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ + '--fallback[fall back to building when the substituter fails]' \ + '--no-substitutes[build instead of resorting to pre-built substitutes]' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ + '--no-grafts[do not graft packages]' \ + '--no-offload[do not attempt to offload builds]' \ + '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ + '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ + '--rounds=[build N times in a row to detect non-determinism]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + '--help-transform[list package transformation options not shown here]' \ + {-V,--version}'[display version information and exit]' \ + '*:regexp' +} + (( $+functions[_guix_publish] )) || _guix_publish() { _arguments \ - '--port=[listen on PORT]:PORT:' \ - '--listen=[listen on the network interface for HOST]:HOST:_hosts' \ - '--user=[change privileges to USER as soon as possible]:USER:_users' \ - '--compression=[compress archives at LEVEL]:LEVEL' \ + {-p,--port=}'[listen on PORT]:PORT' \ + {-p,--port=}'[listen on PORT]:PORT' \ + '--listen=[listen on the network interface for HOST]:HOST_hosts' \ + {-u,--user=}'[change privileges to USER as soon as possible]:USER_users' \ + {-a,--advertise}'[advertise on the local network]' \ + {-C,--compression=}'[compress archives with METHOD at LEVEL]:METHOD' \ + {-c,--cache=}'[cache published items to DIRECTORY]:DIRECTORY:_files -/' \ + '--cache-bypass-threshold=[serve store items below SIZE even when not cached]:SIZE' \ + '--workers=[use N workers to bake items]:N' \ '--ttl=[announce narinfos can be cached for TTL seconds]:TTL' \ - '--repl=[spawn REPL server on PORT]:PORT' + '--nar-path=[use PATH as the prefix for nar URLs]:PATH' \ + '--public-key=[use FILE as the public key for signatures]:FILE:_files' \ + '--private-key=[use FILE as the private key for signatures]:FILE:_files' \ + {-r,--repl=}'[spawn REPL server on PORT]:PORT' \ + {-V,--version}'[display version information and exit]' \ + '--listen=[listen on the network interface for HOST]:HOST_hosts' \ + {-u,--user=}'[change privileges to USER as soon as possible]:USER_users' \ + {-a,--advertise}'[advertise on the local network]' \ + {-C,--compression=}'[compress archives with METHOD at LEVEL]:METHOD' \ + {-c,--cache=}'[cache published items to DIRECTORY]:DIRECTORY:_files -/' \ + '--cache-bypass-threshold=[serve store items below SIZE even when not cached]:SIZE' \ + '--workers=[use N workers to bake items]:N' \ + '--ttl=[announce narinfos can be cached for TTL seconds]:TTL' \ + '--nar-path=[use PATH as the prefix for nar URLs]:PATH' \ + '--public-key=[use FILE as the public key for signatures]:FILE:_files' \ + '--private-key=[use FILE as the private key for signatures]:FILE:_files' \ + {-r,--repl=}'[spawn REPL server on PORT]:PORT' \ + {-V,--version}'[display version information and exit]' } (( $+functions[_guix_pull] )) || _guix_pull() { _arguments \ - '--verbose[produce verbose output]' \ - '--url=[download the Guix tarball from URL]:URL:_urls' \ - '--bootstrap[use the bootstrap Guile to build the new Guix]' + {-C,--channels=}'[deploy the channels defined in FILE]:FILE:_files' \ + '--url=[download from the Git repository at URL]:URL:_urls' \ + '--commit=[download the specified COMMIT]:COMMIT' \ + '--branch=[download the tip of the specified BRANCH]:BRANCH' \ + '--allow-downgrades[allow downgrades to earlier channel revisions]' \ + '--disable-authentication[disable channel authentication]' \ + {-N,--news}'[display news compared to the previous generation]' \ + {-l,--list-generations=}'[list generations matching PATTERN]:PATTERN' \ + '--roll-back[roll back to the previous generation]' \ + {-d,--delete-generations=}'[delete generations matching PATTERN]:PATTERN' \ + {-S,--switch-generation=}'[switch to a generation matching PATTERN]:PATTERN' \ + {-p,--profile=}'[use PROFILE instead of ~/.config/guix/current]:PROFILE:_files -/' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + {-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ + '--bootstrap[use the bootstrap Guile to build the new Guix]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ + '--fallback[fall back to building when the substituter fails]' \ + '--no-substitutes[build instead of resorting to pre-built substitutes]' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ + '--no-grafts[do not graft packages]' \ + '--no-offload[do not attempt to offload builds]' \ + '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ + '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ + '--rounds=[build N times in a row to detect non-determinism]:N' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + {-V,--version}'[display version information and exit]' } (( $+functions[_guix_refresh] )) || _guix_refresh() { _arguments \ - '--expression=[consider the package EXPR evaluates to]:EXPR' \ - '--update[update source files in place]' \ - '--select=[select all the packages in SUBSET]:SUBSET:(core non-core)' \ - '--type=[restrict to updates from the specified updaters]:UPDATER:->updaters' \ - '--list-updaters[list available updaters and exit]' \ - '--list-dependent[list top-level dependent packages]' \ - '--key-server=[use HOST as the OpenPGP key server]:HOST:_hosts' \ + {-e,--expression=}'[consider the package EXPR evaluates to]:EXPR' \ + {-u,--update}'[update source files in place]' \ + {-s,--select=}'[select all the packages in SUBSET, one of]:SUBSET:(core non-core)' \ + {-m,--manifest=}'[select all the packages from the manifest in FILE]:FILE:_files' \ + {-t,--type=}'[restrict to updates from the specified updaters]:UPDATER:-.updaters' \ + {-L,--list-updaters}'[list available updaters and exit]' \ + {-l,--list-dependent}'[list top-level dependent packages that would need to be rebuilt as a result of upgrading PACKAGE...]' \ + {-r,--recursive}'[check the PACKAGE and its inputs for upgrades]' \ + '--list-transitive[list all the packages that PACKAGE depends on]' \ + '--keyring=[use FILE as the keyring of upstream OpenPGP keys]:FILE:_files' \ + '--key-server=[use HOST as the OpenPGP key server]:HOST_hosts' \ '--gpg=[use COMMAND as the GnuPG 2.x command]:COMMAND' \ - '--key-download=[policy to handle missing OpenPGP keys]:POLICY:(always interactive never)' \ + '--key-download=[handle missing OpenPGP keys according to POLICY:]:POLICY:(always interactive never)' \ + '--load-path=[prepend DIR to the package module search path]:DIR:_files -/' \ + {-V,--version}'[display version information and exit]' \ '*:package:->packages' case "$state" in @@ -352,9 +537,12 @@ _guix_list_installed_packages() (( $+functions[_guix_size] )) || _guix_size() { _arguments \ - '--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \ - '-system=[consider packages for SYSTEM--e.g., "i686-linux"]:SYSTEM' \ - '--map-file=[write to FILE a graphical map of disk usage]:FILE:_files' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ + {-s,--system=}'[consider packages for SYSTEM (e.g. "i686-linux")]:SYSTEM' \ + '--sort=[sort according to KEY]:KEY:(closure self)' \ + {-m,--map-file=}'[write to FILE a graphical map of disk usage]:FILE:_files' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-V,--version}'[display version information and exit]' \ '*:package:->packages' if [[ "$state" = packages ]]; then @@ -366,28 +554,42 @@ _guix_list_installed_packages() (( $+functions[_guix_system] )) || _guix_system() { _arguments \ - '--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \ - '--keep-failed[keep build tree of failed builds]' \ - '--keep-going[keep going when some of the derivations fail]' \ - '--dry-run[do not build the derivations]' \ + {-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \ + {-K,--keep-failed}'[keep build tree of failed builds]' \ + {-k,--keep-going}'[keep going when some of the derivations fail]' \ + {-n,--dry-run}'[do not build the derivations]' \ '--fallback[fall back to building when the substituter fails]' \ '--no-substitutes[build instead of resorting to pre-built substitutes]' \ - '--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \ + '--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \ '--no-grafts[do not graft packages]' \ '--no-offload[do not attempt to offload builds]' \ '--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \ '--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \ - '--verbosity=[use the given verbosity LEVEL]:LEVEL' \ '--rounds=[build N times in a row to detect non-determinism]:N' \ - '--cores=[allow the use of up to N CPU cores for the build]:N' \ - '--max-jobs=[allow at most N build jobs]:N' \ - '--derivation[return the derivation of the given system]' \ - '--on-error=[apply STRATEGY when an error occurs while reading FILE]:STRATEGY' \ - '--image-size=[for "image", produce an image of SIZE]:SIZE' \ - '--no-grub[for "init", do not install GRUB]' \ - '--share=[for "vm", share host file system according to SPEC]:SPEC' \ - '--expose=[for "vm", expose host file system according to SPEC]:SPEC' \ - '--full-boot[for "vm", make a full boot sequence]' \ + {-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \ + {-M,--max-jobs=}'[allow at most N build jobs]:N' \ + '--debug=[produce debugging output at LEVEL]:LEVEL' \ + {-d,--derivation}'[return the derivation of the given system]' \ + {-e,--expression=}'[consider the operating-system EXPR evaluates to instead of reading FILE, when applicable]:EXPR' \ + '--allow-downgrades[for reconfigure, allow downgrades to earlier channel revisions]' \ + '--on-error=[apply STRATEGY when an error occurs while reading FILE]:STRATEGY:(nothing-special backtrace debug)' \ + '--list-image-types[list available image types]' \ + {-t,--image-type=}'[for image, produce an image of TYPE]:TYPE' \ + '--image-size=[for image, produce an image of SIZE]:SIZE' \ + '--no-bootloader[for init, do not install a bootloader]' \ + '--volatile[for image, make the root file system volatile]' \ + '--label=[for image, label disk image with LABEL]:LABEL' \ + '--save-provenance[save provenance information]' \ + '--share=[for vm and container, share host file system with read/write access according to SPEC]:SPEC' \ + '--expose=[for vm and container, expose host file system directory as read-only according to SPEC]:SPEC' \ + {-N,--network}'[for container, allow containers to access the network]' \ + {-r,--root=}'[for vm, image, container and build, make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \ + '--full-boot[for vm, make a full boot sequence]' \ + '--skip-checks[skip file system and initrd module safety checks]' \ + '--target=[cross-build for TRIPLET (e.g. "armel-linux-gnu")]:TRIPLET' \ + {-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \ + '--graph-backend=[use BACKEND for extension-graphs and shepherd-graph]:BACKEND' \ + {-V,--version}'[display version information and exit]' \ '1:action:->actions' \ '*:file:_files' @@ -414,6 +616,9 @@ _guix_list_installed_packages() "import:Run an importer" "lint:Run a set of checkers on a package" "package:Install, remove, or upgrade packages" + "install:Install packages" + "remove:Remove packages" + "upgrade:Upgrade packages" "publish:Publish /gnu/store over HTTP." "pull:Download and deploy the latest version of Guix" "refresh:Update package definitions to match the latest version"