]> git.scottworley.com Git - paperdoorknob/blobdiff - args.py
--quiet controls fetch cache hit rate report too
[paperdoorknob] / args.py
diff --git a/args.py b/args.py
index 8f77a887547b403d311ee0939a5a423b168aa88a..67d8c3f84dbe485d14afd731475338115c269f56 100644 (file)
--- a/args.py
+++ b/args.py
@@ -8,6 +8,7 @@
 from argparse import ArgumentParser
 from contextlib import contextmanager
 import os.path
 from argparse import ArgumentParser
 from contextlib import contextmanager
 import os.path
+from sys import stderr
 
 from typing import Iterator
 
 
 from typing import Iterator
 
@@ -17,11 +18,16 @@ from domfilter import ApplyDOMFilters, DOMFilters
 from fetch import CachingFetcher
 from glowfic import BesideIconLayout, BelowIconLayout, Layout
 from htmlfilter import ApplyHTMLFilters, HTMLFilters
 from fetch import CachingFetcher
 from glowfic import BesideIconLayout, BelowIconLayout, Layout
 from htmlfilter import ApplyHTMLFilters, HTMLFilters
+from texfilter import ApplyTexFilters, TexFilters
 from images import DiskImageStore
 from spec import Spec
 from texify import PandocTexifier
 
 
 from images import DiskImageStore
 from spec import Spec
 from texify import PandocTexifier
 
 
+def _print_status(msg: str) -> None:
+    print(msg, file=stderr, end='' if msg.endswith('\r') else '\n')
+
+
 def _command_line_parser() -> ArgumentParser:
     parser = ArgumentParser(prog='paperdoorknob', description='Print glowfic')
     parser.add_argument(
 def _command_line_parser() -> ArgumentParser:
     parser = ArgumentParser(prog='paperdoorknob', description='Print glowfic')
     parser.add_argument(
@@ -59,6 +65,14 @@ See https://faculty.bard.edu/bloch/geometry.pdf for details
              '(eg: "%(default)s" produces %(default)s.tex, %(default)s.pdf, etc.)',
         default='book')
     parser.add_argument('--pandoc', help='Location of the pandoc executable')
              '(eg: "%(default)s" produces %(default)s.tex, %(default)s.pdf, etc.)',
         default='book')
     parser.add_argument('--pandoc', help='Location of the pandoc executable')
+    parser.add_argument(
+        '--quiet',
+        action='store_true',
+        help='Suppress progress messages')
+    parser.add_argument(
+        '--texfilters',
+        help='Which TeX filters to use (default: %(default)s)',
+        default=','.join(f[0] for f in TexFilters))
     parser.add_argument(
         '--timeout',
         help='How long to wait for HTTP requests, in seconds',
     parser.add_argument(
         '--timeout',
         help='How long to wait for HTTP requests, in seconds',
@@ -80,7 +94,8 @@ def spec_from_commandline_args() -> Iterator[Spec]:
         layout = BesideIconLayout(texifier, args.image_size)
     else:
         raise ValueError(f'Unknown layout: {args.layout}')
         layout = BesideIconLayout(texifier, args.image_size)
     else:
         raise ValueError(f'Unknown layout: {args.layout}')
-    with CachingFetcher(args.cache_path, args.timeout) as fetcher:
+    log = (lambda _: None) if args.quiet else _print_status
+    with CachingFetcher(args.cache_path, args.timeout, log) as fetcher:
         with open(args.out + '.tex', 'wb') as texout:
             yield Spec(
                 args.url,
         with open(args.out + '.tex', 'wb') as texout:
             yield Spec(
                 args.url,
@@ -88,6 +103,8 @@ def spec_from_commandline_args() -> Iterator[Spec]:
                 DiskImageStore(args.out + '_images', fetcher),
                 lambda x: ApplyHTMLFilters(args.htmlfilters, x),
                 lambda x: ApplyDOMFilters(args.domfilters, x),
                 DiskImageStore(args.out + '_images', fetcher),
                 lambda x: ApplyHTMLFilters(args.htmlfilters, x),
                 lambda x: ApplyDOMFilters(args.domfilters, x),
+                lambda x: ApplyTexFilters(args.texfilters, x),
                 layout,
                 args.geometry,
                 layout,
                 args.geometry,
-                texout)
+                texout,
+                log)