Coverage for codexa/main.py: 97%
35 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-10 07:53 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-10 07:53 +0000
1import logging
3import click
4import colorama
6from codexa import __version__
7from codexa.commands.compare import compare_command
8from codexa.commands.list import list_command
9from codexa.commands.run import run_command
10from codexa.core.handler import CliHandler
11from codexa.core.output import ColorHandler
13colorama.init(autoreset=True)
16def __get_log_level(verbosity: int) -> int:
17 levels = {0: logging.WARN, 1: logging.INFO, 2: logging.DEBUG}
18 return levels.get(verbosity, logging.DEBUG)
21def __set_logger(level: int):
22 logger = logging.getLogger(__package__)
23 log_level = __get_log_level(level)
24 logger.setLevel(log_level)
25 handler = ColorHandler()
26 handler.setLevel(log_level)
28 timestamp_format = "[%(asctime)s][%(levelname)s] %(message)s"
29 if log_level == logging.DEBUG:
30 timestamp_format = "[%(asctime)s][%(levelname)s] %(name)s: %(message)s"
31 formatter = logging.Formatter(
32 fmt=timestamp_format,
33 datefmt="%Y-%m-%d %H:%M:%S",
34 )
35 handler.setFormatter(formatter)
36 logger.addHandler(handler)
39@click.group(cls=CliHandler)
40@click.pass_context
41@click.version_option(version=__version__)
42@click.option(
43 "-v",
44 "--verbose",
45 count=True,
46 help="Increase verbosity. Use multiple times for more detail (e.g., -vv for debug).",
47)
48def cli(context: click.Context, verbose: int):
49 """Codexa: CLI tool for test automation assistance."""
50 __set_logger(verbose)
51 context.ensure_object(dict)
54cli.add_command(run_command)
55cli.add_command(list_command)
56cli.add_command(compare_command)