Allow overriding a default project "platformio.ini" configuration file

This commit is contained in:
Ivan Kravets
2019-05-10 13:12:41 +03:00
parent 76818448e2
commit d9b0364aa8
3 changed files with 31 additions and 10 deletions

View File

@ -39,12 +39,22 @@ from platformio.managers.core import inject_contrib_pysite
dir_okay=True,
writable=True,
resolve_path=True))
@click.option(
"-c",
"--project-conf",
type=click.Path(
exists=True,
file_okay=True,
dir_okay=False,
readable=True,
resolve_path=True))
@click.option("--environment", "-e", metavar="<environment>")
@click.option("--verbose", "-v", is_flag=True)
@click.option("--interface", type=click.Choice(["gdb"]))
@click.argument("__unprocessed", nargs=-1, type=click.UNPROCESSED)
@click.pass_context
def cli(ctx, project_dir, environment, verbose, interface, __unprocessed):
def cli(ctx, project_dir, project_conf, environment, verbose, interface,
__unprocessed):
try:
util.ensure_udev_rules()
except NameError:
@ -59,8 +69,10 @@ def cli(ctx, project_dir, environment, verbose, interface, __unprocessed):
project_dir = os.getenv("CWD")
with util.cd(project_dir):
env_name = helpers.check_env_name(project_dir, environment)
env_options = helpers.get_env_options(project_dir, env_name)
env_name = helpers.check_env_name(project_conf or project_dir,
environment)
env_options = helpers.get_env_options(project_conf or project_dir,
env_name)
if not set(env_options.keys()) >= set(["platform", "board"]):
raise exception.ProjectEnvsNotAvailable()
debug_options = helpers.validate_debug_options(ctx, env_options)

View File

@ -46,8 +46,8 @@ def escape_path(path):
return path.replace("\\", "/")
def check_env_name(project_dir, environment):
config = util.load_project_config(project_dir)
def check_env_name(project_conf, environment):
config = util.load_project_config(project_conf)
envs = []
for section in config.sections():
if section.startswith("env:"):
@ -63,8 +63,8 @@ def check_env_name(project_dir, environment):
return envs[0]
def get_env_options(project_dir, environment):
config = util.load_project_config(project_dir)
def get_env_options(project_conf, environment):
config = util.load_project_config(project_conf)
options = {}
for k, v in config.items("env:%s" % environment):
options[k] = v

View File

@ -53,6 +53,15 @@ from platformio.commands.test.native import NativeTestProcessor
dir_okay=True,
writable=True,
resolve_path=True))
@click.option(
"-c",
"--project-conf",
type=click.Path(
exists=True,
file_okay=True,
dir_okay=False,
readable=True,
resolve_path=True))
@click.option("--without-building", is_flag=True)
@click.option("--without-uploading", is_flag=True)
@click.option("--without-testing", is_flag=True)
@ -71,14 +80,14 @@ from platformio.commands.test.native import NativeTestProcessor
@click.pass_context
def cli( # pylint: disable=redefined-builtin
ctx, environment, ignore, filter, upload_port, test_port, project_dir,
without_building, without_uploading, without_testing, no_reset,
monitor_rts, monitor_dtr, verbose):
project_conf, without_building, without_uploading, without_testing,
no_reset, monitor_rts, monitor_dtr, verbose):
with util.cd(project_dir):
test_dir = util.get_projecttest_dir()
if not isdir(test_dir):
raise exception.TestDirNotExists(test_dir)
test_names = get_test_names(test_dir)
projectconf = util.load_project_config()
projectconf = util.load_project_config(project_conf)
env_default = None
if projectconf.has_option("platformio", "env_default"):
env_default = util.parse_conf_multi_values(