From 1955eb67e57fbd93d4d8fd313445d84640b78377 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Mon, 27 May 2019 23:05:06 +0200 Subject: all tools: Creating a shared group of argument options. Processing this shared group too, changing the log level when logging options are specified. --- src/ee/tools/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/ee/tools/__init__.py') diff --git a/src/ee/tools/__init__.py b/src/ee/tools/__init__.py index 112e306..0d4ef14 100644 --- a/src/ee/tools/__init__.py +++ b/src/ee/tools/__init__.py @@ -1,4 +1,6 @@ +import argparse import os.path +import sys from pathlib import Path from typing import Union @@ -34,3 +36,34 @@ def mk_dirs(path: Union[str, Path]): if not os.path.isdir(dirname): os.mkdir(dirname) + + +def add_default_argparse_group(parser: argparse.ArgumentParser): + group = parser.add_argument_group("common") + + # Ideally these would not be shown when the default output is shown (for example when missing a required argument), + # only when --help is given. + + group.add_argument("-v", "--verbose", + help="Verbose output", + dest="verbose", action="store_const", const=True) + + group.add_argument("--log", + help="Set log level", + choices=["warn", "info", "debug"], + dest="log", + metavar="LEVEL") + + +def process_default_argparse_group(args): + if args.verbose is not None and args.log is not None: + print("Can't specify both -v and --log", file=sys.stderr) + sys.exit(1) + + log_level = args.log + if args.verbose: + log_level = "debug" + + log_level = log_level if log_level is not None else "info" + + log.set_level(log_level) -- cgit v1.2.3