summaryrefslogtreecommitdiff
path: root/morphlib/morphset.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/morphset.py')
-rw-r--r--morphlib/morphset.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/morphlib/morphset.py b/morphlib/morphset.py
index 468bcbe9..10583326 100644
--- a/morphlib/morphset.py
+++ b/morphlib/morphset.py
@@ -202,3 +202,23 @@ class MorphologySet(object):
self._traverse_specs(process_spec, wanted_spec)
+ def list_refs(self):
+ '''Return a set of all the (repo, ref) pairs in the MorphologySet.
+
+ This does not dirty the morphologies so they do not need to be
+ written back to the disk.
+
+ '''
+ known = set()
+
+ def wanted_spec(m, kind, spec):
+ return (spec['repo'], spec['ref']) not in known
+
+ def process_spec(spec):
+ known.add((spec['repo'], spec['ref']))
+ return False
+
+ self._traverse_specs(process_spec, wanted_spec)
+
+ return known
+