#!/usr/bin/python import os import sys import json import yaml def die(msg, *args): sys.stderr.write(msg + '\n', *args) sys.exit(99) def emit(datum, root='./'): if type(datum) is not dict: die("Unexpected type: {0} of type {1}", datum, type(datum)) else: for key, val in datum.items(): if type(val) is dict: new_root = os.path.join(root, key) os.makedir(new_root) emit(val, root=new_root) elif type(val) is list: die("Cannot serialize lists: {0}", datum) elif type(val) is str or type(val) is unicode: with open(os.path.join(root, key), 'w') as f: f.write(val) f.write('\n') else: with open(os.path.join(root, key), 'w') as f: json.dump(val, f) f.write('\n') if __name__ == '__main__': if sys.argv[:1] and sys.argv[1] != '-': with open(sys.argv[1]) as f: datum = yaml.load(f) else: datum = yaml.load(sys.stdin) emit(datum)