From 21e6679056644a94764f44d102e6bd1e975302ed Mon Sep 17 00:00:00 2001 From: sparkyniner <110723606+sparkyniner@users.noreply.github.com> Date: Sun, 21 Aug 2022 03:39:44 +0530 Subject: spack list: add --tag flag (#32016) * modified list.py and added functionality for --tag * Removed long and very long, shifted rest of code above return statement * removed results variable * added import statement at top * added the line accidentally deleted * added line accidentally deleted * changed p.name to p, added line inside if statement * line order switched * [@spackbot] updating style on behalf of sparkyniner * ran update completion command * add tests * Update lib/spack/spack/test/cmd/list.py Co-authored-by: Adam J. Stewart * [@spackbot] updating style on behalf of sparkyniner * changed argument to mock_packages and moved code under filter by tag * removed bad rebase code and added additional test * [@spackbot] updating style on behalf of sparkyniner * added line removed earlier * added line removed earlier * replaced function * added more recommended changes Co-authored-by: sairaj Co-authored-by: Adam J. Stewart --- lib/spack/spack/cmd/list.py | 7 +++++++ lib/spack/spack/test/cmd/list.py | 14 ++++++++++++++ share/spack/spack-completion.bash | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index c51c0959c0..54f8e890f4 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -16,6 +16,7 @@ import sys import llnl.util.tty as tty from llnl.util.tty.colify import colify +import spack.cmd.common.arguments as arguments import spack.dependency import spack.repo from spack.version import VersionList @@ -72,6 +73,7 @@ def setup_parser(subparser): default=False, help="include virtual packages in list", ) + arguments.add_common_arguments(subparser, ["tags"]) def filter_by_name(pkgs, args): @@ -306,6 +308,11 @@ def list(parser, args): # Filter the set appropriately sorted_packages = filter_by_name(pkgs, args) + # If tags have been specified on the command line, filter by tags + if args.tags: + packages_with_tags = spack.repo.path.packages_with_tags(*args.tags) + sorted_packages = [p for p in sorted_packages if p in packages_with_tags] + if args.update: # change output stream if user asked for update if os.path.exists(args.update): diff --git a/lib/spack/spack/test/cmd/list.py b/lib/spack/spack/test/cmd/list.py index 5a4b4b223e..924ef140b3 100644 --- a/lib/spack/spack/test/cmd/list.py +++ b/lib/spack/spack/test/cmd/list.py @@ -84,3 +84,17 @@ def test_list_update(tmpdir, mock_packages): assert update_file.exists() with update_file.open() as f: assert f.read() == "empty\n" + + +def test_list_tags(mock_packages): + output = list("--tag", "tag1") + assert "mpich" in output + assert "mpich2" in output + + output = list("--tag", "tag2") + assert "mpich\n" in output + assert "mpich2" not in output + + output = list("--tag", "tag3") + assert "mpich\n" not in output + assert "mpich2" in output diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index bd41619a09..936593d98a 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1209,7 +1209,7 @@ _spack_license_update_copyright_year() { _spack_list() { if $list_options then - SPACK_COMPREPLY="-h --help -d --search-description --format --update -v --virtuals" + SPACK_COMPREPLY="-h --help -d --search-description --format --update -v --virtuals -t --tag" else _all_packages fi -- cgit v1.2.3-60-g2f50