|
1 | 1 | """Defines the data and routines for building a CPPython project type""" |
2 | 2 |
|
3 | 3 | import logging |
| 4 | +import os |
4 | 5 | from importlib.metadata import entry_points |
5 | 6 | from inspect import getmodule |
6 | 7 | from logging import Logger |
| 8 | +from pprint import pformat |
7 | 9 | from typing import Any, cast |
8 | 10 |
|
| 11 | +from rich.console import Console |
| 12 | +from rich.logging import RichHandler |
| 13 | + |
9 | 14 | from cppython.core.plugin_schema.generator import Generator |
10 | 15 | from cppython.core.plugin_schema.provider import Provider |
11 | 16 | from cppython.core.plugin_schema.scm import SCM, SupportedSCMFeatures |
@@ -471,8 +476,28 @@ def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) |
471 | 476 | self._project_configuration = project_configuration |
472 | 477 | self._logger = logger |
473 | 478 |
|
474 | | - # Add default output stream |
475 | | - self._logger.addHandler(logging.StreamHandler()) |
| 479 | + # Informal standard to check for color |
| 480 | + force_color = os.getenv('FORCE_COLOR', '1') != '0' |
| 481 | + |
| 482 | + console = Console( |
| 483 | + force_terminal=force_color, |
| 484 | + color_system='auto', |
| 485 | + width=120, |
| 486 | + legacy_windows=False, |
| 487 | + no_color=False, |
| 488 | + ) |
| 489 | + |
| 490 | + rich_handler = RichHandler( |
| 491 | + console=console, |
| 492 | + rich_tracebacks=True, |
| 493 | + show_time=False, |
| 494 | + show_path=False, |
| 495 | + markup=True, |
| 496 | + show_level=False, |
| 497 | + enable_link_path=False, |
| 498 | + ) |
| 499 | + |
| 500 | + self._logger.addHandler(rich_handler) |
476 | 501 | self._logger.setLevel(Builder.levels[project_configuration.verbosity]) |
477 | 502 |
|
478 | 503 | self._logger.info('Logging setup complete') |
@@ -532,4 +557,6 @@ def build( |
532 | 557 |
|
533 | 558 | plugins = Plugins(generator=generator, provider=provider, scm=scm) |
534 | 559 |
|
| 560 | + self._logger.debug('Project data:\n%s', pformat(dict(core_data))) |
| 561 | + |
535 | 562 | return Data(core_data, plugins, self._logger) |
0 commit comments