From 757f8ae59ca841ce75a4b452bb3092b0a80e73cd Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 10 Jul 2023 00:43:37 -0700 Subject: 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 ``` --- lib/spack/spack/cmd/find.py | 8 ++++++++ share/spack/spack-completion.bash | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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 @@ -30,6 +30,14 @@ def setup_parser(subparser): default=None, 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", 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 -- cgit v1.2.3-60-g2f50