diff options
author | Lars Wirzenius <liw@liw.fi> | 2014-04-18 13:26:13 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2014-04-18 13:26:13 +0100 |
commit | d4c0c137c047127205297e3171b39ac5f08e858f (patch) | |
tree | c763e52aadd3b5eb9acc42c0c02726c7be9daf0d | |
parent | b225026cbc395c8fbaf458f5d156c60a9ce92333 (diff) | |
download | distix-d4c0c137c047127205297e3171b39ac5f08e858f.tar.gz |
Implement _list subcommand
-rw-r--r-- | distixlib/plugins/metadata_manipulation_plugin.py | 18 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | yarns/020-metadata-manipulation.yarn | 2 |
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)) @@ -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 |