From c0380744893323a622d9e0f494e9d2dba82f94db Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 1 Jun 2019 14:36:07 +0300 Subject: [PATCH] Override default development platform upload command with a custom // Resolve #2599 --- HISTORY.rst | 1 + docs | 2 +- platformio/builder/main.py | 3 +++ platformio/project/config.py | 2 ++ platformio/project/options.py | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index 29fe6dac..225b42bd 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,6 +18,7 @@ PlatformIO 4.0 - Custom project ``***_dir`` options declared in `platformio `__ section have higher priority than `Environment variables `__ - Added support for Unix shell-style wildcards for `monitor_port `__ option (`issue #2541 `_) - Added new `monitor_flags `__ option which allows passing extra flags and options to `platformio device monitor `__ command (`issue #2165 `_) + - Override default development platform upload command with a custom `upload_command `__ (`issue #2599 `_) - Fixed an issue when ``-U`` in ``build_flags`` does not remove macro previously defined via ``-D`` flag (`issue #2508 `_) * **Library Management** diff --git a/docs b/docs index c9023fb4..c030b967 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit c9023fb4dcaa44630c6aad854e47b2720ffd3022 +Subproject commit c030b967a5fa6d2e234f536d99ae2fe0b4d1a88d diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 60dacf3b..9c9da5f6 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -60,6 +60,7 @@ DEFAULT_ENV_OPTIONS = dict( UNIX_TIME=int(time()), PROJECT_DIR=project_helpers.get_project_dir(), PROJECTCORE_DIR=project_helpers.get_project_core_dir(), + PROJECTPACKAGES_DIR=project_helpers.get_project_packages_dir(), PROJECTWORKSPACE_DIR=project_helpers.get_project_workspace_dir(), PROJECTLIBDEPS_DIR=project_helpers.get_project_libdeps_dir(), PROJECTINCLUDE_DIR=project_helpers.get_project_include_dir(), @@ -118,6 +119,8 @@ env.SConscript("$BUILD_SCRIPT") if "UPLOAD_FLAGS" in env: env.Prepend(UPLOADERFLAGS=["$UPLOAD_FLAGS"]) +if env.GetProjectOption("upload_command"): + env.Replace(UPLOADCMD=env.GetProjectOption("upload_command")) for item in env.GetExtraScripts("post"): env.SConscript(item, exports="env") diff --git a/platformio/project/config.py b/platformio/project/config.py index 0f6326a7..f9b75fa0 100644 --- a/platformio/project/config.py +++ b/platformio/project/config.py @@ -278,6 +278,8 @@ class ProjectConfig(object): for name in option.oldnames}) for section in self._parser.sections(): + if not section.startswith("env:") or section != "platformio": + continue for option in self._parser.options(section): # obsolete if option in renamed_options: diff --git a/platformio/project/options.py b/platformio/project/options.py index fbebff03..1c5ff5e9 100644 --- a/platformio/project/options.py +++ b/platformio/project/options.py @@ -140,6 +140,7 @@ ProjectOptions = OrderedDict([ buildenvvar="UPLOAD_FLAGS"), ConfigEnvOption(name="upload_resetmethod", buildenvvar="UPLOAD_RESETMETHOD"), + ConfigEnvOption(name="upload_command", buildenvvar="UPLOADCMD"), # Monitor ConfigEnvOption(name="monitor_port"),