From f0f457ee5aa63352b5616a4a41c06d2a185aa4b7 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Wed, 24 Oct 2018 18:30:02 -0500 Subject: [PATCH] cli framework done --- ext_open.py | 19 ++++++++++++------- opts.py | 29 ++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/ext_open.py b/ext_open.py index f180a59..3dc0a27 100644 --- a/ext_open.py +++ b/ext_open.py @@ -1,11 +1,16 @@ from opts import * import argparse -parser = argparse.ArgumentParser(prog="ext-open",prefix_chars = "+") +parser = argparse.ArgumentParser(prog='ext-open',prefix_chars = '+') for opt in prefix: - parser.add_argument(**opt) + parser.add_argument(*opt.pop('ostring'),**opt) +sub_parsers = parser.add_subparsers() +exe_parser = sub_parsers.add_parser('exe',prefix_chars='+') +for opt in exe: + exe_parser.add_argument(*opt.pop('ostring'),**opt) for ext in exts: - sub_parser = parser.add_subparser(ext["ext"]) - for opt in ext["opts"]+common: - sub_parser.add_argument(**opt) -if name == "__main__": - args = parser.parse_args() \ No newline at end of file + sub_parser = sub_parsers.add_parser(ext['ext'],prefix_chars = '+') + for opt in ext['opts']+common: + opt = opt.copy() + sub_parser.add_argument(*opt.pop('ostring'),**opt) +if __name__ == '__main__': + args = parser.parse_args() diff --git a/opts.py b/opts.py index e28829c..59bfadd 100644 --- a/opts.py +++ b/opts.py @@ -1,14 +1,33 @@ prefix = [ + { + 'ostring':['+u','++update'], + 'help':'update the listings for ext', + 'action':'store_true', + }, + ] -common [ +common = [ + { + 'ostring':['+e','++edit'], + 'help': 'open in editor', + 'action': 'store_true', + }, + { + 'ostring':['arg'], + 'help':'commnad-line args', + 'action':'store', + 'nargs':'*' + } ] exts = [ { - "ext" : "py", - "opts" : [] + 'ext' : 'py', + 'opts' : [] }, { - "ext" : "java", - "opts": [] + 'ext' : 'java', + 'opts': [] } +] +exe = [ ] \ No newline at end of file