diff options
Diffstat (limited to '')
-rwxr-xr-x | cligen/cli-codegen.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/cligen/cli-codegen.py b/cligen/cli-codegen.py new file mode 100755 index 0000000..afac576 --- /dev/null +++ b/cligen/cli-codegen.py @@ -0,0 +1,40 @@ +#!/usr/bin/python +# Copyright (C) 2021-2022 Daiki Ueno +# SPDX-License-Identifier: LGPL-2.1-or-later + +import argparse +import cligen.package +import cligen.types +import cligen.code +import json + + +parser = argparse.ArgumentParser(description='generate option parsing code') +parser.add_argument('json', type=argparse.FileType('r')) +parser.add_argument('c', type=argparse.FileType('w')) +parser.add_argument('h', type=argparse.FileType('w')) +parser.add_argument('--package', help='package', required=True) +parser.add_argument('--version', help='version', required=True) +parser.add_argument('--license', help='license') +parser.add_argument('--authors', help='authors') +parser.add_argument('--copyright-year', help='copyright year') +parser.add_argument('--copyright-holder', help='copyright holder') +parser.add_argument('--bug-email', help='bug report email address') + +args = parser.parse_args() +kwargs = { + 'name': args.package, + 'version': args.version +} +if args.license: + kwargs['license'] = args.license +if args.copyright_year: + kwargs['copyright_year'] = args.copyright_year +if args.copyright_holder: + kwargs['copyright_holder'] = args.copyright_holder +if args.bug_email: + kwargs['bug_email'] = args.bug_email +info = cligen.package.Info(**kwargs) +desc = cligen.types.Desc.from_json(json.load(args.json)) +cligen.code.generate_source(desc, info, args.c) +cligen.code.generate_header(desc, info, args.h) |