flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude benchmark Excluding the benchmark directory (due to protobuf generated files) Also removing some Python2 specific code
46 lines
1.1 KiB
Python
Executable File
46 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import sys
|
|
import json
|
|
import capnp
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("command")
|
|
parser.add_argument("schema_file")
|
|
parser.add_argument("struct_name")
|
|
parser.add_argument("-d", "--defaults", help="include default values in json output", action="store_true")
|
|
|
|
return parser.parse_args()
|
|
|
|
def encode(schema_file, struct_name, **kwargs):
|
|
schema = capnp.load(schema_file)
|
|
|
|
struct_schema = getattr(schema, struct_name)
|
|
|
|
struct_dict = json.load(sys.stdin)
|
|
struct = struct_schema.from_dict(struct_dict)
|
|
|
|
struct.write(sys.stdout)
|
|
|
|
def decode(schema_file, struct_name, defaults):
|
|
schema = capnp.load(schema_file)
|
|
|
|
struct_schema = getattr(schema, struct_name)
|
|
struct = struct_schema.read(sys.stdin)
|
|
|
|
json.dump(struct.to_dict(defaults), sys.stdout)
|
|
|
|
def main():
|
|
args = parse_args()
|
|
|
|
command = args.command
|
|
kwargs = vars(args)
|
|
del kwargs['command']
|
|
|
|
globals()[command](**kwargs) # hacky way to get defined functions, and call function with name=command
|
|
|
|
|
|
main()
|