]>
git.scottworley.com Git - paperdoorknob/blob - args.py
1 # paperdoorknob: Print glowfic
3 # This program is free software: you can redistribute it and/or modify it
4 # under the terms of the GNU General Public License as published by the
5 # Free Software Foundation, version 3.
8 from argparse
import ArgumentParser
9 from contextlib
import contextmanager
12 from typing
import Iterator
14 from xdg_base_dirs
import xdg_cache_home
16 from fetch
import CachingFetcher
18 from texify
import PandocTexifier
21 def _command_line_parser() -> ArgumentParser
:
22 parser
= ArgumentParser(prog
='paperdoorknob', description
='Print glowfic')
26 help='Where to keep the http cache (instead of %(default)s)',
27 default
=os
.path
.join(xdg_cache_home(), "paperdoorknob"))
30 help='The filename stem at which to write output ' +
31 '(eg: "%(default)s" produces %(default)s.tex, %(default)s.pdf, etc.)',
33 parser
.add_argument('--pandoc', help='Location of the pandoc executable')
36 help='How long to wait for HTTP requests, in seconds',
38 parser
.add_argument('url', help='URL to retrieve')
43 def spec_from_commandline_args() -> Iterator
[Spec
]:
44 args
= _command_line_parser().parse_args()
45 with CachingFetcher(args
.cache_path
, args
.timeout
) as fetcher
:
46 with open(args
.out
+ '.tex', 'wb') as texout
:
47 yield Spec(args
.url
, fetcher
, PandocTexifier(args
.pandoc
or 'pandoc'), texout
)