diff --git a/tools/sjson.py b/tools/sjson.py index 12b7917f..78a777e6 100755 --- a/tools/sjson.py +++ b/tools/sjson.py @@ -5,6 +5,7 @@ # ############################################################ import argparse +import yaml import json import os import sys @@ -30,6 +31,7 @@ def setkeypath(d, kvt): ap=argparse.ArgumentParser(description="Simple JSON Generator.") ap.add_argument("--kj", nargs=2, metavar=('KEY', 'FILE|STR'), help="Add json data.") +ap.add_argument("--ky", nargs=2, metavar=('KEY', 'FILE|STR'), help="Add yaml jdata.") ap.add_argument("--kv", nargs=2, metavar=('KEY', 'VALUE'), help="Add key/value pair.") ap.add_argument("--kl", nargs='+', metavar=('KEY', 'ENTRY'), help="Add key/list pair.") ap.add_argument("--out", metavar='FILENAME', help="Write output to the given file. The default is stdout") @@ -48,6 +50,14 @@ if ops.kj: v = json.loads(j) setkeypath(g_data, (k, v)) +if ops.ky: + (k, y) = ops.ky + if os.path.exists(y): + v = yaml.load(open(y)) + else: + v = yaml.load(y) + setkeypath(g_data, (k, v)) + if ops.kv: setkeypath(g_data, ops.kv) @@ -63,4 +73,3 @@ if ops.out and ops.out not in ['-', 'stdout']: json.dump(g_data, out, indent=ops.indent) if not ops.no_nl: out.write('\n') -