cliutil: Take on --jobs support from audit_report.
This commit is contained in:
parent
0f91aefb5a
commit
552dae6ea5
2 changed files with 21 additions and 16 deletions
|
@ -59,6 +59,7 @@ from .beancount_types import (
|
||||||
|
|
||||||
OutputFile = Union[int, IO]
|
OutputFile = Union[int, IO]
|
||||||
|
|
||||||
|
CPU_COUNT = len(os.sched_getaffinity(0))
|
||||||
STDSTREAM_PATH = Path('-')
|
STDSTREAM_PATH = Path('-')
|
||||||
VERSION = pkg_resources.require(PKGNAME)[0].version
|
VERSION = pkg_resources.require(PKGNAME)[0].version
|
||||||
|
|
||||||
|
@ -241,6 +242,15 @@ class SearchTerm(NamedTuple):
|
||||||
postings, self.meta_key, re.compile(self.pattern),
|
postings, self.meta_key, re.compile(self.pattern),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def add_jobs_argument(parser: argparse.ArgumentParser) -> argparse.Action:
|
||||||
|
return parser.add_argument(
|
||||||
|
'--jobs', '-j',
|
||||||
|
metavar='NUM',
|
||||||
|
type=jobs_arg,
|
||||||
|
default=CPU_COUNT,
|
||||||
|
help="""Maximum number of processes to run concurrently.
|
||||||
|
Can specify a positive integer or a percentage of CPU cores. Default all cores.
|
||||||
|
""")
|
||||||
|
|
||||||
def add_loglevel_argument(parser: argparse.ArgumentParser,
|
def add_loglevel_argument(parser: argparse.ArgumentParser,
|
||||||
default: LogLevel=LogLevel.INFO) -> argparse.Action:
|
default: LogLevel=LogLevel.INFO) -> argparse.Action:
|
||||||
|
@ -306,6 +316,16 @@ def year_or_date_arg(arg: str) -> Union[int, datetime.date]:
|
||||||
else:
|
else:
|
||||||
return date_arg(arg)
|
return date_arg(arg)
|
||||||
|
|
||||||
|
def jobs_arg(arg: str) -> int:
|
||||||
|
if arg.endswith('%'):
|
||||||
|
arg_n = round(CPU_COUNT * 100 / int(arg[:-1]))
|
||||||
|
else:
|
||||||
|
arg_n = int(arg)
|
||||||
|
if arg_n < 1:
|
||||||
|
raise ValueError("--jobs argument must be a positive integer or percentage")
|
||||||
|
else:
|
||||||
|
return arg_n
|
||||||
|
|
||||||
def make_entry_point(mod_name: str, prog_name: str=sys.argv[0]) -> Callable[[], int]:
|
def make_entry_point(mod_name: str, prog_name: str=sys.argv[0]) -> Callable[[], int]:
|
||||||
"""Create an entry_point function for a tool
|
"""Create an entry_point function for a tool
|
||||||
|
|
||||||
|
|
|
@ -52,17 +52,9 @@ from beancount.scripts import check as bc_check
|
||||||
ArgList = List[str]
|
ArgList = List[str]
|
||||||
ReportFunc = Callable[[ArgList, TextIO, TextIO, configmod.Config], int]
|
ReportFunc = Callable[[ArgList, TextIO, TextIO, configmod.Config], int]
|
||||||
|
|
||||||
CPU_COUNT = len(os.sched_getaffinity(0))
|
|
||||||
PROGNAME = 'audit-report'
|
PROGNAME = 'audit-report'
|
||||||
logger = logging.getLogger('conservancy_beancount.tools.audit_report')
|
logger = logging.getLogger('conservancy_beancount.tools.audit_report')
|
||||||
|
|
||||||
def jobs_arg(arg: str) -> int:
|
|
||||||
if arg.endswith('%'):
|
|
||||||
arg_n = round(CPU_COUNT * 100 / int(arg[:-1]))
|
|
||||||
else:
|
|
||||||
arg_n = int(arg)
|
|
||||||
return max(1, arg_n)
|
|
||||||
|
|
||||||
def parse_arguments(arglist: Optional[Sequence[str]]=None) -> argparse.Namespace:
|
def parse_arguments(arglist: Optional[Sequence[str]]=None) -> argparse.Namespace:
|
||||||
parser = argparse.ArgumentParser(prog=PROGNAME)
|
parser = argparse.ArgumentParser(prog=PROGNAME)
|
||||||
cliutil.add_version_argument(parser)
|
cliutil.add_version_argument(parser)
|
||||||
|
@ -72,14 +64,7 @@ def parse_arguments(arglist: Optional[Sequence[str]]=None) -> argparse.Namespace
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="""Display progress information
|
help="""Display progress information
|
||||||
""")
|
""")
|
||||||
parser.add_argument(
|
cliutil.add_jobs_argument(parser)
|
||||||
'--jobs', '-j',
|
|
||||||
metavar='NUM',
|
|
||||||
type=jobs_arg,
|
|
||||||
default=CPU_COUNT,
|
|
||||||
help="""Maximum number of processes to run concurrently.
|
|
||||||
Can specify a positive integer or a percentage of CPU cores. Default all cores.
|
|
||||||
""")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--output-directory', '-O',
|
'--output-directory', '-O',
|
||||||
metavar='DIR',
|
metavar='DIR',
|
||||||
|
|
Loading…
Reference in a new issue