aboutsummaryrefslogtreecommitdiff
path: root/src/smp/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/smp/__init__.py')
-rw-r--r--src/smp/__init__.py38
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)