2013-10-22 13:22:08 -07:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
import json
|
|
|
|
import capnp
|
|
|
|
|
2019-12-11 22:44:44 -08:00
|
|
|
|
2013-10-22 13:22:08 -07:00
|
|
|
def parse_args():
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument("command")
|
|
|
|
parser.add_argument("schema_file")
|
|
|
|
parser.add_argument("struct_name")
|
2021-10-01 11:00:22 -07:00
|
|
|
parser.add_argument(
|
|
|
|
"-d",
|
|
|
|
"--defaults",
|
|
|
|
help="include default values in json output",
|
|
|
|
action="store_true",
|
|
|
|
)
|
2013-10-22 13:22:08 -07:00
|
|
|
|
|
|
|
return parser.parse_args()
|
|
|
|
|
2019-12-11 22:44:44 -08:00
|
|
|
|
2013-10-22 13:32:35 -07:00
|
|
|
def encode(schema_file, struct_name, **kwargs):
|
2013-10-22 13:22:08 -07:00
|
|
|
schema = capnp.load(schema_file)
|
|
|
|
|
|
|
|
struct_schema = getattr(schema, struct_name)
|
2019-09-26 22:18:28 -07:00
|
|
|
|
2013-10-22 13:22:08 -07:00
|
|
|
struct_dict = json.load(sys.stdin)
|
|
|
|
struct = struct_schema.from_dict(struct_dict)
|
|
|
|
|
|
|
|
struct.write(sys.stdout)
|
|
|
|
|
2019-12-11 22:44:44 -08:00
|
|
|
|
2013-10-22 13:32:35 -07:00
|
|
|
def decode(schema_file, struct_name, defaults):
|
2013-10-22 13:22:08 -07:00
|
|
|
schema = capnp.load(schema_file)
|
|
|
|
|
|
|
|
struct_schema = getattr(schema, struct_name)
|
|
|
|
struct = struct_schema.read(sys.stdin)
|
2019-09-26 22:18:28 -07:00
|
|
|
|
2013-10-22 13:32:35 -07:00
|
|
|
json.dump(struct.to_dict(defaults), sys.stdout)
|
2013-10-22 13:22:08 -07:00
|
|
|
|
2019-12-11 22:44:44 -08:00
|
|
|
|
2013-10-22 13:22:08 -07:00
|
|
|
def main():
|
|
|
|
args = parse_args()
|
|
|
|
|
|
|
|
command = args.command
|
|
|
|
kwargs = vars(args)
|
2021-10-01 11:00:22 -07:00
|
|
|
del kwargs["command"]
|
2013-10-22 13:22:08 -07:00
|
|
|
|
2021-10-01 11:00:22 -07:00
|
|
|
globals()[command](
|
|
|
|
**kwargs
|
|
|
|
) # hacky way to get defined functions, and call function with name=command
|
2013-10-22 13:22:08 -07:00
|
|
|
|
2019-09-26 22:18:28 -07:00
|
|
|
|
|
|
|
main()
|