Source code for devops_utils.cli.main

"""Root Click group for the ``devops-utils`` command."""

import click

from devops_utils import __version__
from devops_utils.cli.commands.azdo import azdo
from devops_utils.cli.commands.sanitize import sanitize
from devops_utils.cli.commands.setup import setup
from devops_utils.core.encoding import configure_stdio
from devops_utils.core.envfile import load_env_files


@click.group()
@click.version_option(__version__, prog_name="devops-utils")
def cli() -> None:
    """A set of utility tools for DevOps."""
    # Work-item text and this CLI's own output are non-ASCII; a redirected
    # stdout on Windows is cp1252 and would raise UnicodeEncodeError mid-write.
    # `main` already did this for the console script; repeating it here (the
    # call is idempotent) covers `python -m` and embedding `cli` directly.
    configure_stdio()
    # Same for the env file: setdefault-only, so a second call is a no-op.
    load_env_files()


cli.add_command(sanitize)
cli.add_command(azdo)
cli.add_command(setup)


[docs] def main() -> None: """Console-script entry point. Configures stdio *before* Click parses ``argv``. Eager options (``--help``, ``--version``) print to stdout during parsing, which is too early for the group callback — and unlike stderr, stdout gets no ``backslashreplace`` default from CPython. """ configure_stdio() load_env_files() cli()
if __name__ == "__main__": main()