summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2023-07-10 00:43:37 -0700
committerGitHub <noreply@github.com>2023-07-10 09:43:37 +0200
commit757f8ae59ca841ce75a4b452bb3092b0a80e73cd (patch)
treef8fabc73c9c90402f0cb80972399bc26853f55ea
parent27c62b981ab534a67362a1b7c4037282521f0f8b (diff)
downloadspack-757f8ae59ca841ce75a4b452bb3092b0a80e73cd.tar.gz
spack-757f8ae59ca841ce75a4b452bb3092b0a80e73cd.tar.bz2
spack-757f8ae59ca841ce75a4b452bb3092b0a80e73cd.tar.xz
spack-757f8ae59ca841ce75a4b452bb3092b0a80e73cd.zip
find: add `--hashes` shortcut for piping to other commands (#38663)
People frequently ask us how to pipe `spack find` output to other commands, and we tell them to do things like this: ```console $ spack find --format "/{hash}" | spack uninstall -ay ``` Sometimes users don't know about hash references and come up with potentially ambiguous formulations like this: ```console spack find --format {name}@{version}%{compiler} | spack uninstall -ay ``` Since this is a common enough thing to want to do, and to make it more obvious how, this PR adds a `-H` / `--hashes` as a shortcut, so you can now just do: ```console spack find -H | spack uninstall -ay ```
-rw-r--r--lib/spack/spack/cmd/find.py8
-rwxr-xr-xshare/spack/spack-completion.bash2
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py
index f7bd56db19..15ea5c7709 100644
--- a/lib/spack/spack/cmd/find.py
+++ b/lib/spack/spack/cmd/find.py
@@ -31,6 +31,14 @@ def setup_parser(subparser):
help="output specs with the specified format string",
)
format_group.add_argument(
+ "-H",
+ "--hashes",
+ action="store_const",
+ dest="format",
+ const="{/hash}",
+ help="same as '--format {/hash}'; use with xargs or $()",
+ )
+ format_group.add_argument(
"--json",
action="store_true",
default=False,
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash
index 2e98698e0f..959e4924f2 100755
--- a/share/spack/spack-completion.bash
+++ b/share/spack/spack-completion.bash
@@ -1075,7 +1075,7 @@ _spack_fetch() {
_spack_find() {
if $list_options
then
- SPACK_COMPREPLY="-h --help --format --json -d --deps -p --paths --groups --no-groups -l --long -L --very-long -t --tag -c --show-concretized -f --show-flags --show-full-compiler -x --explicit -X --implicit -u --unknown -m --missing -v --variants --loaded -M --only-missing --deprecated --only-deprecated -N --namespace --start-date --end-date"
+ SPACK_COMPREPLY="-h --help --format -H --hashes --json -d --deps -p --paths --groups --no-groups -l --long -L --very-long -t --tag -c --show-concretized -f --show-flags --show-full-compiler -x --explicit -X --implicit -u --unknown -m --missing -v --variants --loaded -M --only-missing --deprecated --only-deprecated -N --namespace --start-date --end-date"
else
_installed_packages
fi