forked from platformio/platformio-core
Improve "run" command: env details, timing // Resolve #74
This commit is contained in:
@ -1,8 +1,10 @@
|
|||||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||||
# See LICENSE for details.
|
# See LICENSE for details.
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
from os.path import getmtime, isdir, join
|
from os.path import getmtime, isdir, join
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
|
from time import time
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
@ -46,16 +48,45 @@ def cli(ctx, environment, target, upload_port):
|
|||||||
# echo("Skipped %s environment" % style(envname, fg="yellow"))
|
# echo("Skipped %s environment" % style(envname, fg="yellow"))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
click.echo("Processing %s environment:" %
|
|
||||||
click.style(envname, fg="cyan"))
|
|
||||||
|
|
||||||
options = {}
|
options = {}
|
||||||
for k, v in config.items(section):
|
for k, v in config.items(section):
|
||||||
options[k] = v
|
options[k] = v
|
||||||
|
|
||||||
process_environment(ctx, envname, options, target, upload_port)
|
process_environment(ctx, envname, options, target, upload_port)
|
||||||
|
|
||||||
|
|
||||||
def process_environment(ctx, name, options, targets, upload_port):
|
def process_environment(ctx, name, options, targets, upload_port):
|
||||||
|
terminal_width, _ = click.get_terminal_size()
|
||||||
|
start_time = time()
|
||||||
|
|
||||||
|
click.echo("[%s] Processing %s (%s)" % (
|
||||||
|
datetime.now().strftime("%c"),
|
||||||
|
click.style(name, fg="cyan", bold=True),
|
||||||
|
", ".join(["%s: %s" % (k, v) for k, v in options.iteritems()])
|
||||||
|
))
|
||||||
|
click.secho("-" * terminal_width, bold=True)
|
||||||
|
|
||||||
|
result = _run_environment(ctx, name, options, targets, upload_port)
|
||||||
|
is_error = "Error" in result['err']
|
||||||
|
|
||||||
|
click.secho(result['out'], fg="green")
|
||||||
|
if result['err']:
|
||||||
|
click.secho(result['err'], err=True,
|
||||||
|
fg="red" if is_error else "yellow")
|
||||||
|
|
||||||
|
summary_text = " Took %.2f seconds " % (time() - start_time)
|
||||||
|
half_line = "=" * ((terminal_width - len(summary_text) - 10) / 2)
|
||||||
|
click.echo("%s [%s]%s%s" % (
|
||||||
|
half_line,
|
||||||
|
(click.style(" ERROR ", fg="red", bold=True)
|
||||||
|
if is_error else click.style("SUCCESS", fg="green", bold=True)),
|
||||||
|
summary_text,
|
||||||
|
half_line
|
||||||
|
), err=is_error)
|
||||||
|
click.echo()
|
||||||
|
|
||||||
|
|
||||||
|
def _run_environment(ctx, name, options, targets, upload_port):
|
||||||
variables = ["PIOENV=" + name]
|
variables = ["PIOENV=" + name]
|
||||||
if upload_port:
|
if upload_port:
|
||||||
variables.append("UPLOAD_PORT=%s" % upload_port)
|
variables.append("UPLOAD_PORT=%s" % upload_port)
|
||||||
@ -86,7 +117,4 @@ def process_environment(ctx, name, options, targets, upload_port):
|
|||||||
ctx.invoke(cmd_install, platforms=[platform])
|
ctx.invoke(cmd_install, platforms=[platform])
|
||||||
|
|
||||||
p = PlatformFactory.newPlatform(platform)
|
p = PlatformFactory.newPlatform(platform)
|
||||||
result = p.run(variables, envtargets)
|
return p.run(variables, envtargets)
|
||||||
click.secho(result['out'], fg="green")
|
|
||||||
click.secho(result['err'],
|
|
||||||
fg="red" if "Error" in result['err'] else "yellow")
|
|
||||||
|
Reference in New Issue
Block a user