Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions cloudsmith_cli/cli/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import functools
import logging
import os
import sys

import click
from click.core import ParameterSource

from cloudsmith_cli.cli import validators
from cloudsmith_cli.core.utils import ColorMode, TTYMode, color_enabled

from ..core.credentials.chain import CredentialProviderChain
from ..core.credentials.models import CredentialContext
Expand Down Expand Up @@ -151,6 +153,31 @@ def wrapper(ctx, *args, **kwargs):
def common_cli_output_options(f):
"""Add common CLI output options to commands."""

@click.option(
"--color",
envvar="CLOUDSMITH_COLOR",
default="auto",
type=click.Choice(ColorMode, case_sensitive=False),
Comment thread
cloudsmith-iduffy marked this conversation as resolved.
help="Control whether ANSI colour output is used: auto, always or never.",
)
@click.option(
"--no-color-env",
envvar="NO_COLOR",
default=None,
hidden=True,
)
@click.option(
"--force-color-env",
envvar="CLOUDSMITH_FORCE_COLOR",
default=None,
hidden=True,
)
@click.option(
"--term-env",
envvar="TERM",
default=None,
hidden=True,
)
@click.option(
"-d",
"--debug",
Expand Down Expand Up @@ -178,6 +205,17 @@ def common_cli_output_options(f):
def wrapper(ctx, *args, **kwargs):
# pylint: disable=missing-docstring
opts = config.get_or_create_options(ctx)

ctx.color = color_enabled(
{
"NO_COLOR": kwargs.pop("no_color_env"),
"CLOUDSMITH_FORCE_COLOR": kwargs.pop("force_color_env"),
"TERM": kwargs.pop("term_env"),
},
kwargs.pop("color"),
TTYMode.ENABLED if sys.stdout.isatty() else TTYMode.DISABLED,
)

opts.debug = kwargs.pop("debug") or opts.debug
_configure_debug_logging(opts.debug)
opts.output = kwargs.pop("output_format")
Expand Down
Loading