summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorsparkyniner <110723606+sparkyniner@users.noreply.github.com>2022-08-21 03:39:44 +0530
committerGitHub <noreply@github.com>2022-08-20 16:09:44 -0600
commit21e6679056644a94764f44d102e6bd1e975302ed (patch)
tree2e9df8d95b6a61d52d3a33a6e8c624cf8c7182cb /lib
parent8d02e2cc52d001dd454dbe9898aec576fc95f02a (diff)
downloadspack-21e6679056644a94764f44d102e6bd1e975302ed.tar.gz
spack-21e6679056644a94764f44d102e6bd1e975302ed.tar.bz2
spack-21e6679056644a94764f44d102e6bd1e975302ed.tar.xz
spack-21e6679056644a94764f44d102e6bd1e975302ed.zip
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 <ajstewart426@gmail.com> * [@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 <sairaj@sairajs-MacBook-Pro.local> Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/cmd/list.py7
-rw-r--r--lib/spack/spack/test/cmd/list.py14
2 files changed, 21 insertions, 0 deletions
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