diff --git a/platformio/commands/run.py b/platformio/commands/run.py index 798f7382..f16e3f96 100644 --- a/platformio/commands/run.py +++ b/platformio/commands/run.py @@ -19,7 +19,7 @@ def cli(ctx, environment, target, upload_port): config = get_project_config() if not config.sections(): - raise exception.ProjectEnvsNotAvaialable() + raise exception.ProjectEnvsNotAvailable() unknown = set(environment) - set([s[4:] for s in config.sections()]) if unknown: @@ -40,34 +40,41 @@ def cli(ctx, environment, target, upload_port): click.echo("Processing %s environment:" % click.style(envname, fg="cyan")) - variables = ["PIOENV=" + envname] - if upload_port: - variables.append("UPLOAD_PORT=%s" % upload_port) + options = {} for k, v in config.items(section): - k = k.upper() - if k == "TARGETS" or (k == "UPLOAD_PORT" and upload_port): - continue - variables.append("%s=%s" % (k.upper(), v)) + options[k] = v + process_environment(ctx, envname, options, target, upload_port) - envtargets = [] - if target: - envtargets = [t for t in target] - elif config.has_option(section, "targets"): - envtargets = config.get(section, "targets").split() - if not config.has_option(section, "platform"): - raise exception.UndefinedEnvPlatform(envname) - platform = config.get(section, "platform") +def process_environment(ctx, name, options, targets, upload_port): + variables = ["PIOENV=" + name] + if upload_port: + variables.append("UPLOAD_PORT=%s" % upload_port) + for k, v in options.items(): + k = k.upper() + if k == "TARGETS" or (k == "UPLOAD_PORT" and upload_port): + continue + variables.append("%s=%s" % (k.upper(), v)) - telemetry.on_run_environment(config.items(section), envtargets) + envtargets = [] + if targets: + envtargets = [t for t in targets] + elif "targets" in options: + envtargets = options['targets'].split() - if (platform not in PlatformFactory.get_platforms(installed=True) and - click.confirm("The platform '%s' has not been installed yet. " - "Would you like to install it now?" % platform)): - ctx.invoke(cmd_install, platforms=[platform]) + if "platform" not in options: + raise exception.UndefinedEnvPlatform(name) + platform = options['platform'] - p = PlatformFactory.newPlatform(platform) - result = p.run(variables, envtargets) - click.secho(result['out'], fg="green") - click.secho(result['err'], - fg="red" if "Error" in result['err'] else "yellow") + telemetry.on_run_environment(options, envtargets) + + if (platform not in PlatformFactory.get_platforms(installed=True) and + click.confirm("The platform '%s' has not been installed yet. " + "Would you like to install it now?" % platform)): + ctx.invoke(cmd_install, platforms=[platform]) + + p = PlatformFactory.newPlatform(platform) + result = p.run(variables, envtargets) + click.secho(result['out'], fg="green") + click.secho(result['err'], + fg="red" if "Error" in result['err'] else "yellow") diff --git a/platformio/exception.py b/platformio/exception.py index ae55e352..8188a9fb 100644 --- a/platformio/exception.py +++ b/platformio/exception.py @@ -83,7 +83,7 @@ class ProjectInitialized(PlatformioException): "Process it with `platformio run` command") -class ProjectEnvsNotAvaialable(PlatformioException): +class ProjectEnvsNotAvailable(PlatformioException): MESSAGE = "Please setup environments in `platformio.ini` file." diff --git a/platformio/pkgmanager.py b/platformio/pkgmanager.py index 29090905..757031e3 100644 --- a/platformio/pkgmanager.py +++ b/platformio/pkgmanager.py @@ -121,8 +121,8 @@ class PackageManager(object): current_version = installed[name]['version'] latest_version = self.get_info(name)['version'] - click.echo("Versions: Current=%d, Latest=%d \t " % ( - current_version, latest_version), nl=False) + click.echo("Versions: Current=%d, Latest=%d \t " % + (current_version, latest_version), nl=False) if current_version == latest_version: click.echo("[%s]" % (click.style("Up-to-date", fg="green"))) diff --git a/platformio/telemetry.py b/platformio/telemetry.py index 5d1b08cd..e83bdca8 100644 --- a/platformio/telemetry.py +++ b/platformio/telemetry.py @@ -135,9 +135,9 @@ def on_command(ctx): # pylint: disable=W0613 def on_run_environment(options, targets): - opts = ["%s=%s" % (opt, value) for opt, value in sorted(options)] + opts = ["%s=%s" % (opt, value) for opt, value in sorted(options.items())] targets = [t.title() for t in targets or ["run"]] - on_event("Env", " ".join(targets), " ".join(opts)) + on_event("Env", " ".join(targets), "&".join(opts)) def on_event(category, action, label=None, value=None, screen_name=None): diff --git a/platformio/util.py b/platformio/util.py index 7d2e8c1b..5509b1b2 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -22,8 +22,6 @@ except ImportError: def get_systype(): - if system() == "Windows": - return "windows" data = uname() return ("%s_%s" % (data[0], data[4])).lower()