add coloured output for --dry

This commit is contained in:
Manuel Barkhau 2019-03-24 19:04:14 +01:00
parent 548fb871e0
commit bdc1fdd508
2 changed files with 21 additions and 2 deletions

View file

@ -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)

View file

@ -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()