mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07: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 sys import exit as sys_exit
|
||||||
from traceback import format_exc
|
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 import __version__
|
||||||
from platformio.exception import PlatformioException, UnknownCLICommand
|
from platformio.exception import PlatformioException, UnknownCLICommand
|
||||||
@ -45,7 +45,7 @@ def main():
|
|||||||
cli()
|
cli()
|
||||||
except Exception as e: # pylint: disable=W0703
|
except Exception as e: # pylint: disable=W0703
|
||||||
if isinstance(e, PlatformioException):
|
if isinstance(e, PlatformioException):
|
||||||
sys_exit(style("Error: ", fg="red") + str(e))
|
sys_exit("Error: " + str(e))
|
||||||
else:
|
else:
|
||||||
print format_exc()
|
print format_exc()
|
||||||
|
|
||||||
|
@ -16,13 +16,13 @@ def cli():
|
|||||||
|
|
||||||
if isfile("platformio.ini") and isdir("src"):
|
if isfile("platformio.ini") and isdir("src"):
|
||||||
raise ProjectInitialized()
|
raise ProjectInitialized()
|
||||||
for d in (".pioenvs", "lib", "src"):
|
for d in ("lib", "src"):
|
||||||
if not isdir(d):
|
if not isdir(d):
|
||||||
makedirs(d)
|
makedirs(d)
|
||||||
if not isfile("platformio.ini"):
|
if not isfile("platformio.ini"):
|
||||||
copyfile(join(get_source_dir(), "projectconftpl.ini"),
|
copyfile(join(get_source_dir(), "projectconftpl.ini"),
|
||||||
"platformio.ini")
|
"platformio.ini")
|
||||||
secho("Project successfully initialized.\n"
|
secho("Project has been successfully initialized!\n"
|
||||||
"Please put your source code to `src` directory, "
|
"Please put your source code to `src` directory, "
|
||||||
"external libraries to `lib` and "
|
"external libraries to `lib` and "
|
||||||
"setup environments in `platformio.ini` file.\n"
|
"setup environments in `platformio.ini` file.\n"
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
from click import command, echo, option, secho, style
|
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.platforms._base import PlatformFactory
|
||||||
from platformio.util import get_project_config
|
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")
|
@command("run", short_help="Process project environments")
|
||||||
@option("--environment", "-e", multiple=True, metavar="<environment>")
|
@option("--environment", "-e", multiple=True, metavar="<environment>")
|
||||||
@option("--target", "-t", multiple=True, metavar="<target>")
|
@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()
|
config = get_project_config()
|
||||||
|
|
||||||
if not config.sections():
|
if not config.sections():
|
||||||
raise ProjectEnvsNotAvaialable()
|
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():
|
for section in config.sections():
|
||||||
if section[:4] != "env:":
|
if section[:4] != "env:":
|
||||||
continue
|
raise InvalidEnvName(section)
|
||||||
|
|
||||||
envname = section[4:]
|
envname = section[4:]
|
||||||
if environment and envname not in environment:
|
if environment and envname not in environment:
|
||||||
echo("Skipped %s environment" % style(envname, fg="yellow"))
|
# echo("Skipped %s environment" % style(envname, fg="yellow"))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
echo("Processing %s environment:" % style(envname, fg="cyan"))
|
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 = ["PIOENV=" + envname]
|
||||||
variables.append("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 = []
|
envtargets = []
|
||||||
if target:
|
if target:
|
||||||
|
@ -87,6 +87,16 @@ class ProjectEnvsNotAvaialable(PlatformioException):
|
|||||||
MESSAGE = "Please setup environments in `platformio.ini` file."
|
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):
|
class GetSerialPortsError(PlatformioException):
|
||||||
|
|
||||||
MESSAGE = "No implementation for your platform ('%s') available"
|
MESSAGE = "No implementation for your platform ('%s') available"
|
||||||
|
Reference in New Issue
Block a user