diff options
Diffstat (limited to 'src/smp/__init__.py')
-rw-r--r-- | src/smp/__init__.py | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/src/smp/__init__.py b/src/smp/__init__.py index 4cfc534..5358c29 100644 --- a/src/smp/__init__.py +++ b/src/smp/__init__.py @@ -7,7 +7,7 @@ __all__ = [ ] -def repl(): +def repl(macro_processor): print("=Skaldpress Macro Processor (REPL)") # print(" type \"quit\" to exit"); print("NOT IMPLEMENTED") @@ -15,12 +15,10 @@ def repl(): # as well as the readline library -def read_stdin(): +def read_stdin(macro_processor): import sys data = sys.stdin.read() - macro_processor_state = smp.macro_processor.MacroProcessorState() - macro_processor = macro_processor_state.macro_processor() macro_processor._enter_file_frame("[stdin]", 0, None) res = macro_processor.process_input(data, file="[stdin]") print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━", file=sys.stderr) @@ -28,23 +26,35 @@ def read_stdin(): def main(): + import argparse import sys + from skaldpress.main import parse_keyval_args + + parser = argparse.ArgumentParser(description="Process some arguments.") + parser.add_argument( + "-D", nargs="+", metavar="key=value", default=[], action="extend" + ) + parser.add_argument( + "file", nargs="?", default=None, help='Input file or "-" for stdin' + ) + args = parser.parse_args() + args.D = parse_keyval_args(args.D) - if not sys.stdin.isatty(): - read_stdin() - sys.exit(0) + macro_processor_state = smp.macro_processor.MacroProcessorState() + macro_processor = macro_processor_state.macro_processor() + + for key, value in args.D.items(): + macro_processor.define_macro(key, value) - if len(sys.argv) > 1 and sys.argv[1] == "-": - read_stdin() + if not sys.stdin.isatty() or (args.file == "-"): + read_stdin(macro_processor) sys.exit(0) - if len(sys.argv) == 1: - repl() + if args.file is None: + repl(macro_processor) sys.exit(0) - macro_processor_state = smp.macro_processor.MacroProcessorState() - macro_processor = macro_processor_state.macro_processor() - res = smp.builtins._smp_builtin_read(macro_processor, sys.argv[1]) + res = smp.builtins._smp_builtin_read(macro_processor, args.file) print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━", file=sys.stderr) print(res) |