diff options
author | G-Ragghianti <33492707+G-Ragghianti@users.noreply.github.com> | 2023-05-10 06:26:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-10 12:26:29 +0200 |
commit | ebb40ee0d185d6ae3aa2258f4594933976c7099b (patch) | |
tree | 32910f4d616b3640a39c8742ec8082ee7a61b637 | |
parent | a2ea30aceb6b09d48d4a0c76bbadaf9bff1a5437 (diff) | |
download | spack-ebb40ee0d185d6ae3aa2258f4594933976c7099b.tar.gz spack-ebb40ee0d185d6ae3aa2258f4594933976c7099b.tar.bz2 spack-ebb40ee0d185d6ae3aa2258f4594933976c7099b.tar.xz spack-ebb40ee0d185d6ae3aa2258f4594933976c7099b.zip |
New option "--first" for "spack location" (#36283)
-rw-r--r-- | lib/spack/spack/cmd/location.py | 10 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/location.py | 9 | ||||
-rwxr-xr-x | share/spack/spack-completion.bash | 4 |
3 files changed, 20 insertions, 3 deletions
diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index aba8264a28..0afac01b0c 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -76,6 +76,14 @@ def setup_parser(subparser): help="location of the named or current environment", ) + subparser.add_argument( + "--first", + action="store_true", + default=False, + dest="find_first", + help="use the first match if multiple packages match the spec", + ) + arguments.add_common_arguments(subparser, ["spec"]) @@ -121,7 +129,7 @@ def location(parser, args): # install_dir command matches against installed specs. if args.install_dir: env = ev.active_environment() - spec = spack.cmd.disambiguate_spec(specs[0], env) + spec = spack.cmd.disambiguate_spec(specs[0], env, first=args.find_first) print(spec.prefix) return diff --git a/lib/spack/spack/test/cmd/location.py b/lib/spack/spack/test/cmd/location.py index 38d3f45619..1e42141199 100644 --- a/lib/spack/spack/test/cmd/location.py +++ b/lib/spack/spack/test/cmd/location.py @@ -37,6 +37,15 @@ def mock_spec(): shutil.rmtree(s.package.stage.path) +def test_location_first(install_mockery, mock_fetch, mock_archive, mock_packages): + """Test with and without the --first option""" + install = SpackCommand("install") + install("libelf@0.8.12") + install("libelf@0.8.13") + # This would normally return an error without --first + assert location("--first", "--install-dir", "libelf") + + def test_location_build_dir(mock_spec): """Tests spack location --build-dir.""" spec, pkg = mock_spec diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 320e6fab57..0db940129a 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -590,7 +590,7 @@ _spack_buildcache_rebuild_index() { _spack_cd() { if $list_options then - SPACK_COMPREPLY="-h --help -m --module-dir -r --spack-root -i --install-dir -p --package-dir -P --packages -s --stage-dir -S --stages --source-dir -b --build-dir -e --env" + SPACK_COMPREPLY="-h --help -m --module-dir -r --spack-root -i --install-dir -p --package-dir -P --packages -s --stage-dir -S --stages --source-dir -b --build-dir -e --env --first" else _all_packages fi @@ -1243,7 +1243,7 @@ _spack_load() { _spack_location() { if $list_options then - SPACK_COMPREPLY="-h --help -m --module-dir -r --spack-root -i --install-dir -p --package-dir -P --packages -s --stage-dir -S --stages --source-dir -b --build-dir -e --env" + SPACK_COMPREPLY="-h --help -m --module-dir -r --spack-root -i --install-dir -p --package-dir -P --packages -s --stage-dir -S --stages --source-dir -b --build-dir -e --env --first" else _all_packages fi |