From bdc1fdd5083128a5fdec5e81f127d8da7ef05804 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Sun, 24 Mar 2019 19:04:14 +0100 Subject: [PATCH] add coloured output for --dry --- src/pycalver/__main__.py | 21 ++++++++++++++++++++- src/pycalver/vcs.py | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/pycalver/__main__.py b/src/pycalver/__main__.py index 92e3f3d..fce4730 100755 --- a/src/pycalver/__main__.py +++ b/src/pycalver/__main__.py @@ -244,6 +244,25 @@ def _bump(cfg: config.Config, new_version: str, allow_dirty: bool = False) -> No _vcs.push(new_version) +def _print_diff(cfg: config.Config, new_version: str) -> None: + diff: str = rewrite.diff(new_version, cfg.file_patterns) + + if sys.stdout.isatty(): + for line in diff.splitlines(): + if line.startswith("+++") or line.startswith("---"): + print(line) + elif line.startswith("+"): + print("\u001b[32m" + line + "\u001b[0m") + elif line.startswith("-"): + print("\u001b[31m" + line + "\u001b[0m") + elif line.startswith("@"): + print("\u001b[36m" + line + "\u001b[0m") + else: + print(line) + else: + print(diff) + + @cli.command() @click.option("-v", "--verbose", count=True, help="Control log level. -vv for debug level.") @click.option( @@ -318,7 +337,7 @@ def bump( if dry or verbose >= 2: try: - print(rewrite.diff(new_version, cfg.file_patterns)) + _print_diff(cfg, new_version) except ValueError as ex: log.error(str(ex)) sys.exit(1) diff --git a/src/pycalver/vcs.py b/src/pycalver/vcs.py index f5c9e3a..1a03bc1 100644 --- a/src/pycalver/vcs.py +++ b/src/pycalver/vcs.py @@ -112,7 +112,7 @@ class VCS: def status(self, required_files: typ.Set[str]) -> typ.List[str]: """Get status lines.""" status_output = self('status') - status_items = [line.split(" ", 1) for line in status_output.splitlines()] + status_items = [line.split(" ", 1) for line in status_output.splitlines()] return [ filepath.strip()