]> git.armaanb.net Git - lightcards.git/blobdiff - lightcards/runner.py
Fix side output in bar and header
[lightcards.git] / lightcards / runner.py
index 0d01ca16b8df467b0899e646d75d2485de6a001b..e0af7d9e24e00746ca683e49e0537aac67e98f57 100644 (file)
@@ -2,13 +2,14 @@
 # Armaan Bhojwani 2021
 
 import argparse
-from curses import wrapper
+import curses
 import os
+import pkg_resources
 from random import shuffle
 import sys
 
 from . import parse, progress
-from .display import Display
+from .display import Display, CursesError
 from .deck import Status
 
 
@@ -17,6 +18,15 @@ def parse_args():
     parser = argparse.ArgumentParser(
         description="Terminal flashcards from Markdown"
     )
+    parser.add_argument(
+        "-V",
+        "--view",
+        metavar="view",
+        type=int,
+        choices=range(1, 4),
+        default=1,
+        help="specify which view to start in (default = 1)",
+    )
     parser.add_argument("inp", metavar="input file", type=str, nargs=1)
     parser.add_argument(
         "-a",
@@ -24,9 +34,6 @@ def parse_args():
         action="store_true",
         help="alphabetize card order",
     )
-    parser.add_argument(
-        "-f", "--flip", action="store_true", help="show second column first"
-    )
     parser.add_argument(
         "-p",
         "--purge",
@@ -40,7 +47,10 @@ def parse_args():
         "-s", "--shuffle", action="store_true", help="shuffle card order"
     )
     parser.add_argument(
-        "-v", "--version", action="version", version="lightcards 0.6.0"
+        "-v",
+        "--version",
+        action="version",
+        version=f"lightcards {pkg_resources.require('lightcards')[0].version}",
     )
     return parser.parse_args()
 
@@ -64,17 +74,16 @@ def show(args, stack, headers):
     if args.shuffle:
         shuffle(stack)
     if args.alphabetize:
-        stack.sort()
+        stack.sort(key=lambda x: x.front)
     if args.reverse:
         stack.reverse()
-    if args.flip:
-        for x in stack:
-            x[0], x[1] = x[1], x[0]
-        headers[0], headers[1] = headers[1], headers[0]
 
     # Send to display
-    win = Display(stack, headers, idx)
-    wrapper(win.run)
+    win = Display(stack, headers, idx, args.view)
+    try:
+        curses.wrapper(win.run)
+    except curses.error as e:
+        raise CursesError() from e
 
 
 def reparse():
@@ -90,6 +99,7 @@ def get_orig():
 
 
 def main(args=sys.argv):
+    sys.tracebacklimit = 0
     args = parse_args()
     global headers, stack
     (headers, stack) = parse.parse_html(parse.md2html(args.inp[0]))