Index: cros_extract_deps |
diff --git a/cros_extract_deps b/cros_extract_deps |
index 87b7bdea9372b678d27693a762f5ef7e77b15e47..03ba92cafa2175241d1cb6ae5566464ff7be430a 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) |