summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2014-04-18 13:26:13 +0100
committerLars Wirzenius <liw@liw.fi>2014-04-18 13:26:13 +0100
commitd4c0c137c047127205297e3171b39ac5f08e858f (patch)
treec763e52aadd3b5eb9acc42c0c02726c7be9daf0d
parentb225026cbc395c8fbaf458f5d156c60a9ce92333 (diff)
downloaddistix-d4c0c137c047127205297e3171b39ac5f08e858f.tar.gz
Implement _list subcommand
-rw-r--r--distixlib/plugins/metadata_manipulation_plugin.py18
-rw-r--r--setup.py2
-rw-r--r--yarns/020-metadata-manipulation.yarn2
3 files changed, 20 insertions, 2 deletions
diff --git a/distixlib/plugins/metadata_manipulation_plugin.py b/distixlib/plugins/metadata_manipulation_plugin.py
index f380ff2..b411dbb 100644
--- a/distixlib/plugins/metadata_manipulation_plugin.py
+++ b/distixlib/plugins/metadata_manipulation_plugin.py
@@ -18,6 +18,8 @@
import cliapp
+import distixlib
+
class MetadataManipulationPlugin(cliapp.Plugin):
@@ -30,3 +32,19 @@ class MetadataManipulationPlugin(cliapp.Plugin):
def list(self, args):
'''Show all key/value pairs in a metadata file.'''
+
+ for filename in args:
+ metadata = self._load_metadata(filename)
+ self._list_metadata(filename, metadata)
+
+ def _load_metadata(self, filename):
+ with open(filename) as f:
+ text = f.read()
+ serialiser = distixlib.MetadataSerialiser()
+ return serialiser.deserialise(text)
+
+ def _list_metadata(self, filename, metadata):
+ self.output.write('%s:\n' % filename)
+ for key in sorted(metadata.keys()):
+ for value in sorted(metadata.get_all_values(key)):
+ self.output.write('%s=%s\n' % (key, value))
diff --git a/setup.py b/setup.py
index f81df5e..5611737 100644
--- a/setup.py
+++ b/setup.py
@@ -55,7 +55,7 @@ class Check(Command):
stdout=None, stderr=None)
os.remove('.coverage')
- if self.yarns and got_yarn:
+ if self.yarns:
cliapp.runcmd(['yarn'] + glob.glob('yarns/*.yarn'), stdout=None, stderr=None)
diff --git a/yarns/020-metadata-manipulation.yarn b/yarns/020-metadata-manipulation.yarn
index 550ae1b..fae77be 100644
--- a/yarns/020-metadata-manipulation.yarn
+++ b/yarns/020-metadata-manipulation.yarn
@@ -14,5 +14,5 @@ metadata file doesn't exist.
WHEN user attempts to run distix _list METADATA
THEN attempt failed
- AND error message matches FIXME
+ AND error message matches No such file