]> git.armaanb.net Git - lightcards.git/blobdiff - lightcards/runner.py
Allow for config files to be incomplete
[lightcards.git] / lightcards / runner.py
index 69d5cbe09c1dd029d40e60b5af8a6f1fc8c1027a..15a622983235a671fd6b330b7efe75a6bd42dc55 100644 (file)
@@ -3,12 +3,11 @@
 
 import argparse
 import curses
-import os
 import pkg_resources
 from random import shuffle
 import sys
 
-from . import parse, progress
+from . import parse, progress, config
 from .display import Display, CursesError
 from .deck import Status
 
@@ -18,6 +17,12 @@ def parse_args():
     parser = argparse.ArgumentParser(
         description="Terminal flashcards from Markdown"
     )
+    parser.add_argument(
+        "-c",
+        "--config",
+        type=str,
+        help="specify custom config file",
+    )
     parser.add_argument(
         "-V",
         "--view",
@@ -55,7 +60,7 @@ def parse_args():
     return parser.parse_args()
 
 
-def show(args, stack, headers, input_file):
+def show(args, stack, headers, conf):
     """
     Get objects from cache, manipulate deck according to passed arguments, and
     send it to the display functions
@@ -79,7 +84,7 @@ def show(args, stack, headers, input_file):
         stack.reverse()
 
     # Send to display
-    win = Display(stack, headers, idx, args.view, input_file)
+    win = Display(stack, headers, idx, args.view, args, conf)
     try:
         curses.wrapper(win.run)
     except curses.error as e:
@@ -92,12 +97,15 @@ def get_orig():
 
 
 def main(args=sys.argv):
-    sys.tracebacklimit = 0
     args = parse_args()
     global headers, stack
-    input_file = args.inp[0]
-    (headers, stack) = parse.parse_html(parse.md2html(input_file))
-    show(args, stack, headers, input_file)
+    (headers, stack) = parse.parse_html(parse.md2html(args.inp[0]))
+    conf = config.read_file(args.config)
+
+    if not conf["debug"]:
+        sys.tracebacklimit = 0
+
+    show(args, stack, headers, conf)
 
 
 if __name__ == "__main__":