diff --git a/HISTORY.rst b/HISTORY.rst index 5d4a3c71..44c43bb7 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -12,6 +12,7 @@ PlatformIO 3.0 ``debug`` target using `platformio run `__ command or `targets `__ option in ``platformio.ini``. The last option allows to avoid project rebuilding between "Run/Debug" modes. (`issue #1833 `_) +* Support in-line comments for multi-line value (``lib_deps``, ``build_flags``, etc) in `“platformio.ini” (Project Configuration File) `__ * Do not re-create ".gitignore" and ".travis.yml" files if they were removed from a project @@ -79,7 +80,7 @@ PlatformIO 3.0 * Simplify configuration for `PIO Unit Testing `__: separate main program from a test build process, drop requirement for ``#ifdef UNIT_TEST`` guard -* Override any option from board manifest in `Project Configuration File "platformio.ini" `__ +* Override any option from board manifest in `“platformio.ini” (Project Configuration File) `__ (`issue #1612 `_) * Configure a custom path to SVD file using `debug_svd_path `__ option @@ -142,7 +143,7 @@ PlatformIO 3.0 (`issue #1274 `_) * Configure a custom firmware/program name in build directory (`example `__) * Renamed ``envs_dir`` option to ``build_dir`` - in `Project Configuration File "platformio.ini" `__ + in `“platformio.ini” (Project Configuration File) `__ * Refactored code without "arrow" dependency (resolve issue with "ImportError: No module named backports.functools_lru_cache") * Improved support of PIO Unified Debugger for Eclipse Oxygen @@ -177,7 +178,7 @@ PlatformIO 3.0 folder for project's header files (`issue #1107 `_) * Depend on development platform using VCS URL (Git, Mercurial and Subversion) - instead of a name in `Project Configuration File "platformio.ini" `__. + instead of a name in `“platformio.ini” (Project Configuration File) `__. Drop support for ``*_stage`` dev/platform names (use VCS URL instead). * Reinstall/redownload package with a new ``-f, --force`` option for `platformio lib install `__ @@ -198,7 +199,7 @@ PlatformIO 3.0 - Parse library source file in pair with a header when they have the same name (`issue #1175 `_) - Handle library dependencies defined as VCS or SemVer in - `Project Configuration File "platformio.ini" `__ + `“platformio.ini” (Project Configuration File) `__ (`issue #1155 `_) - Added option to configure library `Compatible Mode `__ using `library.json `__ @@ -234,7 +235,7 @@ PlatformIO 3.0 * Use a root of library when filtering source code using `library.json `__ and ``srcFilter`` field -* Added ``monitor_*`` options to white-list for `Project Configuration File "platformio.ini" `__ +* Added ``monitor_*`` options to white-list for `“platformio.ini” (Project Configuration File) `__ (`issue #982 `_) * Do not ask for board ID when initialize project for desktop platform * Handle broken PIO Core state and create new one @@ -255,18 +256,18 @@ PlatformIO 3.0 - Integration with `Eclipse `__ and `Sublime Text `__ * Filter `PIO Unit Testing `__ - tests using a new ``test_filter`` option in `Project Configuration File "platformio.ini" `__ + tests using a new ``test_filter`` option in `“platformio.ini” (Project Configuration File) `__ or `platformio test --filter `__ command (`issue #934 `_) * Custom ``test_transport`` for `PIO Unit Testing `__ Engine -* Configure Serial Port Monitor in `Project Configuration File "platformio.ini" `__ +* Configure Serial Port Monitor in `“platformio.ini” (Project Configuration File) `__ (`issue #787 `_) * New `monitor `__ target which allows to launch Serial Monitor automatically after successful "build" or "upload" operations (`issue #788 `_) * Project generator for `VIM `__ -* Multi-line support for the different options in `Project Configuration File "platformio.ini" `__, +* Multi-line support for the different options in `“platformio.ini” (Project Configuration File) `__, such as: ``build_flags``, ``build_unflags``, etc. (`issue #889 `_) * Handle dynamic ``SRC_FILTER`` environment variable from @@ -278,7 +279,7 @@ PlatformIO 3.0 that were installed from repository * Add support for ``.*cc`` extension (`issue #939 `_) -* Handle ``env_default`` in `Project Configuration File "platformio.ini" `__ +* Handle ``env_default`` in `“platformio.ini” (Project Configuration File) `__ when re-initializing a project (`issue #950 `_) * Use root directory for PIO Home when path contains non-ascii characters @@ -376,10 +377,10 @@ PlatformIO 3.0 (`issue #808 `_, `issue #467 `_) * Inject system environment variables to configuration settings in - `Project Configuration File "platformio.ini" `__ + `“platformio.ini” (Project Configuration File) `__ (`issue #792 `_) * Custom boards per project with ``boards_dir`` option in - `Project Configuration File "platformio.ini" `__ + `“platformio.ini” (Project Configuration File) `__ (`issue #515 `_) * Unix shell-style wildcards for `upload_port `_ (`issue #839 `_) @@ -390,7 +391,7 @@ PlatformIO 3.0 * Added new `LDF Modes `__: ``chain+`` and ``deep+`` and set ``chain+`` as default * Added global ``lib_extra_dirs`` option to ``[platformio]`` section for - `Project Configuration File "platformio.ini" `__ + `“platformio.ini” (Project Configuration File) `__ (`issue #842 `_) * Enabled caching by default for API requests and Library Manager (see `enable_cache `__ setting) * Native integration with VIM/Neovim using `neomake-platformio `__ plugin @@ -413,7 +414,7 @@ PlatformIO 3.0 3.1.0 (2016-09-19) ~~~~~~~~~~~~~~~~~~ -* New! Dynamic variables/templates for `Project Configuration File "platformio.ini" `__ +* New! Dynamic variables/templates for `“platformio.ini” (Project Configuration File) `__ (`issue #705 `_) * Summary about processed environments (`issue #777 `_) diff --git a/docs b/docs index a02d4903..3687cf29 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit a02d4903b2cec1f0531437108e5ad5101af5933a +Subproject commit 3687cf293d5fc0470e9d8eeea89ec6b80fd694b2 diff --git a/platformio/util.py b/platformio/util.py index 987e4203..3b89f248 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -349,12 +349,19 @@ def load_project_config(path=None): def parse_conf_multi_values(items): + result = [] if not items: - return [] - return [ - item.strip() for item in items.split("\n" if "\n" in items else ", ") - if item.strip() - ] + return result + inline_comment_re = re.compile(r"\s+;.*$") + for item in items.split("\n" if "\n" in items else ", "): + item = item.strip() + # comment + if not item or item.startswith((";", "#")): + continue + if ";" in item: + item = inline_comment_re.sub("", item).strip() + result.append(item) + return result def change_filemtime(path, mtime): diff --git a/tests/test_builder.py b/tests/test_builder.py index 4048c065..882c8662 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -25,7 +25,9 @@ def test_build_flags(clirunner, validate_cliresult, tmpdir): [env:native] platform = native extra_scripts = extra.py -build_flags = %s +build_flags = + ; -DCOMMENTED_MACRO + %s ; inline comment """ % " ".join([f[0] for f in build_flags])) tmpdir.join("extra.py").write(""" @@ -47,6 +49,10 @@ projenv.Append(CPPDEFINES="POST_SCRIPT_MACRO") #error "POST_SCRIPT_MACRO" #endif +#ifdef COMMENTED_MACRO +#error "COMMENTED_MACRO" +#endif + int main() { } """)