Added support to override UPLOAD_PORT via cli-option "$ platformio run --upload-port="

This commit is contained in:
Ivan Kravets
2014-07-27 22:39:41 +03:00
parent 3c70babde4
commit 202e2e0af5
4 changed files with 34 additions and 11 deletions

View File

@ -6,7 +6,7 @@ from os.path import join
from sys import exit as sys_exit
from traceback import format_exc
from click import command, MultiCommand, style, version_option
from click import command, MultiCommand, version_option
from platformio import __version__
from platformio.exception import PlatformioException, UnknownCLICommand
@ -45,7 +45,7 @@ def main():
cli()
except Exception as e: # pylint: disable=W0703
if isinstance(e, PlatformioException):
sys_exit(style("Error: ", fg="red") + str(e))
sys_exit("Error: " + str(e))
else:
print format_exc()

View File

@ -16,13 +16,13 @@ def cli():
if isfile("platformio.ini") and isdir("src"):
raise ProjectInitialized()
for d in (".pioenvs", "lib", "src"):
for d in ("lib", "src"):
if not isdir(d):
makedirs(d)
if not isfile("platformio.ini"):
copyfile(join(get_source_dir(), "projectconftpl.ini"),
"platformio.ini")
secho("Project successfully initialized.\n"
secho("Project has been successfully initialized!\n"
"Please put your source code to `src` directory, "
"external libraries to `lib` and "
"setup environments in `platformio.ini` file.\n"

View File

@ -3,7 +3,8 @@
from click import command, echo, option, secho, style
from platformio.exception import ProjectEnvsNotAvaialable, UndefinedEnvPlatform
from platformio.exception import (InvalidEnvName, ProjectEnvsNotAvaialable,
UndefinedEnvPlatform, UnknownEnvNames)
from platformio.platforms._base import PlatformFactory
from platformio.util import get_project_config
@ -11,26 +12,38 @@ from platformio.util import get_project_config
@command("run", short_help="Process project environments")
@option("--environment", "-e", multiple=True, metavar="<environment>")
@option("--target", "-t", multiple=True, metavar="<target>")
def cli(environment, target):
@option("--upload-port", metavar="<upload port>")
def cli(environment, target, upload_port):
config = get_project_config()
if not config.sections():
raise ProjectEnvsNotAvaialable()
envnames = [s[4:] for s in config.sections()]
unknown = set(environment) - set(envnames)
if unknown:
raise UnknownEnvNames(", ".join(unknown))
for section in config.sections():
if section[:4] != "env:":
continue
raise InvalidEnvName(section)
envname = section[4:]
if environment and envname not in environment:
echo("Skipped %s environment" % style(envname, fg="yellow"))
# echo("Skipped %s environment" % style(envname, fg="yellow"))
continue
echo("Processing %s environment:" % style(envname, fg="cyan"))
variables = ["%s=%s" % (o.upper(), v) for o, v in config.items(section)
if o != "targets"]
variables.append("PIOENV=" + envname)
variables = ["PIOENV=" + envname]
if upload_port:
variables.append("UPLOAD_PORT=%s" % upload_port)
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))
envtargets = []
if target:

View File

@ -87,6 +87,16 @@ class ProjectEnvsNotAvaialable(PlatformioException):
MESSAGE = "Please setup environments in `platformio.ini` file."
class InvalidEnvName(PlatformioException):
MESSAGE = "Invalid environment '%s'. The name must start " "with 'env:'."
class UnknownEnvNames(PlatformioException):
MESSAGE = "Unknown environment names '%s'."
class GetSerialPortsError(PlatformioException):
MESSAGE = "No implementation for your platform ('%s') available"