diff --git a/cros_extract_deps b/cros_extract_deps index 87b7bdea93..03ba92cafa 100755 --- a/cros_extract_deps +++ b/cros_extract_deps @@ -5,8 +5,8 @@ """Extract dependency tree out of emerge and make it accessible and useful.""" +import json import optparse -import pprint import re import shutil import subprocess @@ -23,6 +23,14 @@ class ParseException(Exception): return self.reason +class SetEncoder(json.JSONEncoder): + """Custom json encoder class, doesn't hate set types.""" + def default(self, o): + if isinstance(o, set): + return list(o) + return json.JSONEncoder.default(self, o) + + def GetDepLinesFromPortage(options, packages): """Get dependency lines out of emerge. @@ -179,7 +187,7 @@ def main(): lines = GetDepLinesFromPortage(options, packages) deps_map = ParseDepLines(lines) - output = pprint.pformat(deps_map) + output = json.dumps(deps_map, sort_keys=True, indent=2, cls=SetEncoder) if options.output: output_file = open(options.output, 'w') output_file.write(output)