diff --git a/Lib/gftools/gfargparse.py b/Lib/gftools/gfargparse.py new file mode 100644 index 00000000..1a6aaa34 --- /dev/null +++ b/Lib/gftools/gfargparse.py @@ -0,0 +1,31 @@ +import argparse as dflt_argparse +from gftools.gflogging import setup_logging + + +class GFArgumentParser(dflt_argparse.ArgumentParser): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.add_argument( + "--log-level", + choices=("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"), + default="INFO", + ) + + self.add_argument( + "--show-tracebacks", "-st", + action="store_true", + help=( + "By default, exceptions will only print out error messages. " + "Tracebacks won't be included since the tool is intended for " + "type designers and not developers." + ), + ) + + def parse_args(self, args=None, namespace=None): + args, argv = self.parse_known_args(args, namespace) + if argv: + msg = ('unrecognized arguments: %s') + self.error(msg % ' '.join(argv)) + import pdb; pdb.set_trace() + setup_logging("gftools.packager", args, "packager") + return args diff --git a/Lib/gftools/logging.py b/Lib/gftools/gflogging.py similarity index 100% rename from Lib/gftools/logging.py rename to Lib/gftools/gflogging.py diff --git a/Lib/gftools/scripts/gen_stat.py b/Lib/gftools/scripts/gen_stat.py index 5b70b1e0..b98cb3f2 100755 --- a/Lib/gftools/scripts/gen_stat.py +++ b/Lib/gftools/scripts/gen_stat.py @@ -44,7 +44,7 @@ from axisregistry import AxisRegistry from fontTools.ttLib import TTFont from gftools.stat import gen_stat_tables, gen_stat_tables_from_config -import argparse +from gftools.gfargparse import GFArgumentParser import yaml import os @@ -52,7 +52,7 @@ def main(args=None): - parser = argparse.ArgumentParser() + parser = GFArgumentParser() parser.add_argument( "fonts", nargs="+", help="Variable TTF files which make up a family" ) diff --git a/Lib/gftools/scripts/manage_traffic_jam.py b/Lib/gftools/scripts/manage_traffic_jam.py index 0d6bc3c2..9ba15bf2 100644 --- a/Lib/gftools/scripts/manage_traffic_jam.py +++ b/Lib/gftools/scripts/manage_traffic_jam.py @@ -11,7 +11,7 @@ import subprocess from rich.pretty import pprint -from gftools.logging import setup_logging +from gftools.gflogging import setup_logging from gftools.push.utils import branch_matches_google_fonts_main from gftools.push.servers import GFServers, Items from gftools.push.items import Family, FamilyMeta @@ -23,7 +23,7 @@ STATUS_OPTION_IDS, ) import os -import argparse +from gftools.gfargparse import GFArgumentParser from pathlib import Path import tempfile import json @@ -221,7 +221,7 @@ def update_servers(self): def main(args=None): - parser = argparse.ArgumentParser() + parser = GFArgumentParser() parser.add_argument("fonts_repo", type=Path) parser.add_argument( "-f", @@ -246,12 +246,6 @@ def main(args=None): parser.add_argument( "-s", "--server-data", default=(Path("~") / ".gf_server_data.json").expanduser() ) - parser.add_argument( - "-l", - "--log-level", - choices=("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"), - default="INFO", - ) parser.add_argument( "--update-servers-only", "-uso", @@ -260,7 +254,6 @@ def main(args=None): ) args = parser.parse_args(args) - setup_logging("manage_traffic_jam", args, __name__) branch_matches_google_fonts_main(args.fonts_repo) diff --git a/Lib/gftools/scripts/packager.py b/Lib/gftools/scripts/packager.py index 724ca2fe..ace9d23b 100755 --- a/Lib/gftools/scripts/packager.py +++ b/Lib/gftools/scripts/packager.py @@ -21,12 +21,13 @@ """ import argparse +from gftools.gfargparse import GFArgumentParser from gftools import packager -from gftools.logging import setup_logging +from gftools.gflogging import setup_logging def main(args=None): - parser = argparse.ArgumentParser() + parser = GFArgumentParser() parser.add_argument( "family_name", type=str, @@ -65,24 +66,10 @@ def main(args=None): help="Get assets from latest upstream release", action="store_true", ) - parser.add_argument( - "--log-level", - choices=("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"), - default="INFO", - ) - parser.add_argument( - "--show-tracebacks", - action="store_true", - help=( - "By default, exceptions will only print out error messages. " - "Tracebacks won't be included since the tool is intended for " - "type designers and not developers." - ), - ) parser.add_argument("-i", "--issue-number", help="Issue number to reference in PR") parser.add_argument("--skip-tags", action="store_true") args = parser.parse_args(args) - setup_logging("gftools.packager", args, __name__) + import pdb; pdb.set_trace() packager.make_package(**args.__dict__)