Changeset - b4dee2cf9ae9
[Not reviewed]
0 1 0
Brett Smith - 4 years ago 2020-08-10 14:49:03
brettcsmith@brettcsmith.org
extract_odf_links: Improve help text.
1 file changed with 2 insertions and 2 deletions:
0 comments (0 inline, 0 general)
conservancy_beancount/tools/extract_odf_links.py
Show inline comments
...
 
@@ -39,53 +39,53 @@ from typing import (
 
    TextIO,
 
)
 

	
 
from .. import cliutil
 

	
 
PROGNAME = 'extract-odf-links'
 
logger = logging.getLogger('conservancy_beancount.tools.extract_odf_links')
 

	
 
def parse_delimiter(arg: str) -> str:
 
    try:
 
        retval = eval('"{}"'.format(arg.replace('"', r'\"')), {})
 
    except SyntaxError:
 
        retval = None
 
    if isinstance(retval, str):
 
        return retval
 
    else:
 
        raise ValueError(f"not a valid string: {arg!r}")
 

	
 
def parse_arguments(arglist: Optional[Sequence[str]]=None) -> argparse.Namespace:
 
    parser = argparse.ArgumentParser(prog=PROGNAME)
 
    cliutil.add_version_argument(parser)
 
    cliutil.add_loglevel_argument(parser)
 
    parser.add_argument(
 
        '--delimiter', '-d',
 
        metavar='STR',
 
        metavar='TEXT',
 
        type=parse_delimiter,
 
        default='\\n',
 
        help="""String to output between links. Accepts all backslash escapes
 
supported in Python like \\n, \\t, \\0, \\u, etc. Default '\\n'.
 
supported in Python like \\n, \\t, \\0, \\u, etc. Default `%(default)s`.
 
""")
 
    parser.add_argument(
 
        '--zero', '--null', '-z', '-0',
 
        action='store_const',
 
        dest='delimiter',
 
        const='\0',
 
        help="""Shortcut for --delimiter=\\0
 
""")
 
    parser.add_argument(
 
        'odf_paths',
 
        metavar='ODF_PATH',
 
        type=Path,
 
        nargs=argparse.ONE_OR_MORE,
 
        help="""ODF file(s) to extract links from. Note that %(prog)s cannot
 
read from stdin because it needs to know document paths to resolve links.
 
""")
 
    return parser.parse_args(arglist)
 

	
 
def extract_links(odf_path: Path) -> Iterator[Path]:
 
    odf_root = odf_path.parent.resolve()
 
    with odf_path.open('rb') as odf_file:
 
        odf_doc = odf.opendocument.load(odf_file)
 
    for a_elem in odf_doc.getElementsByType(odf.text.A):
 
        parts = urllib.parse.urlparse(a_elem.getAttribute('href') or '')
0 comments (0 inline, 0 general)