Add verbosity option for "run" and "ci" commands
This commit is contained in:
@@ -190,6 +190,12 @@ class BasePlatform(object):
|
||||
|
||||
def __init__(self):
|
||||
self._found_error = False
|
||||
self._last_echo_line = None
|
||||
|
||||
# 1 = errors
|
||||
# 2 = 1 + warnings
|
||||
# 3 = 2 + others
|
||||
self._verbose_level = 3
|
||||
|
||||
def get_type(self):
|
||||
return self.__class__.__name__[:-8].lower()
|
||||
@@ -306,10 +312,12 @@ class BasePlatform(object):
|
||||
obsolated = pm.get_outdated()
|
||||
return not set(self.get_packages().keys()).isdisjoint(set(obsolated))
|
||||
|
||||
def run(self, variables, targets):
|
||||
def run(self, variables, targets, verbose):
|
||||
assert isinstance(variables, list)
|
||||
assert isinstance(targets, list)
|
||||
|
||||
self._verbose_level = int(verbose)
|
||||
|
||||
installed_platforms = PlatformFactory.get_platforms(
|
||||
installed=True).keys()
|
||||
installed_packages = PackageManager.get_installed()
|
||||
@@ -356,16 +364,34 @@ class BasePlatform(object):
|
||||
if self._found_error:
|
||||
result['returncode'] = 1
|
||||
|
||||
if self._last_echo_line == ".":
|
||||
click.echo("")
|
||||
|
||||
return result
|
||||
|
||||
def on_run_out(self, line): # pylint: disable=R0201
|
||||
fg = None
|
||||
if "is up to date" in line:
|
||||
fg = "green"
|
||||
click.secho(line, fg=fg)
|
||||
def on_run_out(self, line):
|
||||
self._echo_line(line, level=3)
|
||||
|
||||
def on_run_err(self, line): # pylint: disable=R0201
|
||||
def on_run_err(self, line):
|
||||
is_error = self.LINE_ERROR_RE.search(line) is not None
|
||||
if is_error:
|
||||
self._found_error = True
|
||||
click.secho(line, err=True, fg="red" if is_error else "yellow")
|
||||
self._echo_line(line, level=1 if is_error else 2)
|
||||
|
||||
def _echo_line(self, line, level):
|
||||
assert 1 <= level <= 3
|
||||
|
||||
fg = ("red", "yellow", None)[level - 1]
|
||||
if level == 3 and "is up to date" in line:
|
||||
fg = "green"
|
||||
|
||||
if level > self._verbose_level:
|
||||
click.secho(".", fg=fg, err=level < 3, nl=False)
|
||||
self._last_echo_line = "."
|
||||
return
|
||||
|
||||
if self._last_echo_line == ".":
|
||||
click.echo("")
|
||||
self._last_echo_line = line
|
||||
|
||||
click.secho(line, fg=fg, err=level < 3)
|
||||
|
||||
Reference in New Issue
Block a user