]> git.armaanb.net Git - lightcards.git/blobdiff - lightcards/runner.py
Make optional arguments more explicit
[lightcards.git] / lightcards / runner.py
index 69d5cbe09c1dd029d40e60b5af8a6f1fc8c1027a..95e44b5275443b3f25941413123c68e1577e5344 100644 (file)
@@ -3,12 +3,11 @@
 
 import argparse
 import curses
 
 import argparse
 import curses
-import os
 import pkg_resources
 from random import shuffle
 import sys
 
 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
 
 from .display import Display, CursesError
 from .deck import Status
 
@@ -18,16 +17,23 @@ def parse_args():
     parser = argparse.ArgumentParser(
         description="Terminal flashcards from Markdown"
     )
     parser = argparse.ArgumentParser(
         description="Terminal flashcards from Markdown"
     )
+    parser.add_argument(
+        "-c",
+        "--config",
+        metavar="config_file",
+        type=str,
+        default="/dev/null",
+        help="specify custom config file",
+    )
     parser.add_argument(
         "-V",
         "--view",
     parser.add_argument(
         "-V",
         "--view",
-        metavar="view",
+        metavar="1-3",
         type=int,
         choices=range(1, 4),
         type=int,
         choices=range(1, 4),
-        default=1,
-        help="specify which view to start in (default = 1)",
+        help="specify which view to start in",
     )
     )
-    parser.add_argument("inp", metavar="input file", type=str, nargs=1)
+    parser.add_argument("inp", metavar="input_file", type=str, nargs=1)
     parser.add_argument(
         "-a",
         "--alphabetize",
     parser.add_argument(
         "-a",
         "--alphabetize",
@@ -38,7 +44,7 @@ def parse_args():
         "-p",
         "--purge",
         action="store_true",
         "-p",
         "--purge",
         action="store_true",
-        help="don't check cached info before starting",
+        help="delete cache before starting",
     )
     parser.add_argument(
         "-r", "--reverse", action="store_true", help="reverse card order"
     )
     parser.add_argument(
         "-r", "--reverse", action="store_true", help="reverse card order"
@@ -55,7 +61,7 @@ def parse_args():
     return parser.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
     """
     Get objects from cache, manipulate deck according to passed arguments, and
     send it to the display functions
@@ -67,19 +73,25 @@ def show(args, stack, headers, input_file):
     # Check for caches
     idx = Status()
     cache = progress.dive(get_orig()[1])
     # Check for caches
     idx = Status()
     cache = progress.dive(get_orig()[1])
-    if cache:
+    if cache and conf["cache"]:
         (stack) = cache
 
     # Manipulate deck
         (stack) = cache
 
     # Manipulate deck
-    if args.shuffle:
+    if args.shuffle or conf["shuffle"]:
         shuffle(stack)
         shuffle(stack)
-    if args.alphabetize:
+    if args.alphabetize or conf["alphabetize"]:
         stack.sort(key=lambda x: x.front)
         stack.sort(key=lambda x: x.front)
-    if args.reverse:
+    if args.reverse or conf["reverse"]:
         stack.reverse()
 
         stack.reverse()
 
+    # Set view
+    if args.view:
+        view = args.view
+    else:
+        view = conf["default_view"]
+
     # Send to display
     # Send to display
-    win = Display(stack, headers, idx, args.view, input_file)
+    win = Display(stack, headers, idx, view, args, conf)
     try:
         curses.wrapper(win.run)
     except curses.error as e:
     try:
         curses.wrapper(win.run)
     except curses.error as e:
@@ -92,12 +104,16 @@ def get_orig():
 
 
 def main(args=sys.argv):
 
 
 def main(args=sys.argv):
-    sys.tracebacklimit = 0
     args = parse_args()
     args = parse_args()
+    conf = config.read_file(args.config)
+
     global headers, stack
     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]))
+
+    if not conf["debug"]:
+        sys.tracebacklimit = 0
+
+    show(args, stack, headers, conf)
 
 
 if __name__ == "__main__":
 
 
 if __name__ == "__main__":