mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Added support to override UPLOAD_PORT via cli-option "$ platformio run --upload-port="
This commit is contained in:
@ -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()
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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:
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user