new command: spack pkg grep
to search package files (#34388)
It's very common for us to tell users to grep through the existing Spack packages to find examples of what they want, and it's also very common for package developers to do it. Now, searching packages is even easier. `spack pkg grep` runs grep on all `package.py` files in repos known to Spack. It has no special options other than the search string; all options passed to it are forwarded along to `grep`. ```console > spack pkg grep --help usage: spack pkg grep [--help] ... positional arguments: grep_args arguments for grep options: --help show this help message and exit ``` ```console > spack pkg grep CMakePackage | head -3 /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/3dtk/package.py:class _3dtk(CMakePackage): /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/abseil-cpp/package.py:class AbseilCpp(CMakePackage): /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/accfft/package.py:class Accfft(CMakePackage, CudaPackage): ``` ```console > spack pkg grep -Eho '(\S*)\(PythonPackage\)' | head -3 AwsParallelcluster(PythonPackage) Awscli(PythonPackage) Bueno(PythonPackage) ``` ## Return Value This retains the return value semantics of `grep`: * 0 for found, * 1 for not found * >1 for error ## Choosing a `grep` You can set the ``SPACK_GREP`` environment variable to choose the ``grep`` executable this command should use.
This commit is contained in:
@@ -42,7 +42,8 @@ do
|
||||
succeeds _spack_completions "${line[@]}" ''
|
||||
|
||||
# Test that completion with flags works
|
||||
contains '-h --help' _spack_completions "${line[@]}" -
|
||||
# all commands but spack pkg grep have -h; all have --help
|
||||
contains '--help' _spack_completions "${line[@]}" -
|
||||
done <<- EOF
|
||||
$(spack commands --aliases --format=subcommands)
|
||||
EOF
|
||||
|
@@ -1450,7 +1450,7 @@ _spack_pkg() {
|
||||
then
|
||||
SPACK_COMPREPLY="-h --help"
|
||||
else
|
||||
SPACK_COMPREPLY="add list diff added changed removed source hash"
|
||||
SPACK_COMPREPLY="add list diff added changed removed grep source hash"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1508,6 +1508,15 @@ _spack_pkg_removed() {
|
||||
fi
|
||||
}
|
||||
|
||||
_spack_pkg_grep() {
|
||||
if $list_options
|
||||
then
|
||||
SPACK_COMPREPLY="--help"
|
||||
else
|
||||
SPACK_COMPREPLY=""
|
||||
fi
|
||||
}
|
||||
|
||||
_spack_pkg_source() {
|
||||
if $list_options
|
||||
then
|
||||
|
Reference in New Issue
Block a user