From a8ae5e4d03177239c946c3bdc0082e2ff28f7c5d Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 4 Dec 2015 15:18:31 +0200 Subject: [PATCH] Generate .travis.yml CI config for embedded projects by default // Resolve #354 --- HISTORY.rst | 5 +- docs/_static/ci-travis-logo.png | Bin 0 -> 20965 bytes docs/ci/travis.rst | 7 ++ platformio/__init__.py | 2 +- platformio/commands/init.py | 131 ++++++++++++++++++++++---------- 5 files changed, 102 insertions(+), 43 deletions(-) create mode 100644 docs/_static/ci-travis-logo.png diff --git a/HISTORY.rst b/HISTORY.rst index d369f15c..4cba0f05 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,9 +4,12 @@ Release History PlatformIO 2.0 -------------- -2.4.2 (2015-12-??) +2.5.0 (2015-12-??) ~~~~~~~~~~~~~~~~~~ +* Generate `.travis.yml `__ + CI config for embedded projects by default + (`issue #354 `_) * Removed prompt with "auto-uploading" from `platformio init `__ command and added ``--enable-auto-uploading`` option (`issue #352 `_) diff --git a/docs/_static/ci-travis-logo.png b/docs/_static/ci-travis-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6846343a96e0c5a37c29efadf837786be90479 GIT binary patch literal 20965 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 +**PlatformIO for Embedded Builds.** + `Travis CI `_ is an open-source hosted, distributed continuous integration service used to build and test projects hosted at `GitHub `_. diff --git a/platformio/__init__.py b/platformio/__init__.py index 5e23151c..3365b850 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION = (2, 4, "2.dev0") +VERSION = (2, 5, "0.dev0") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/commands/init.py b/platformio/commands/init.py index a9ceeb23..c1f64055 100644 --- a/platformio/commands/init.py +++ b/platformio/commands/init.py @@ -83,47 +83,8 @@ def cli(ctx, project_dir, board, ide, # pylint: disable=R0913 if not isdir(d): makedirs(d) - if not isfile(join(lib_dir, "readme.txt")): - with open(join(lib_dir, "readme.txt"), "w") as f: - f.write(""" -This directory is intended for the project specific (private) libraries. -PlatformIO will compile them to static libraries and link to executable file. - -The source code of each library should be placed in separate directory, like -"lib/private_lib/[here are source files]". - -For example, see how can be organised `Foo` and `Bar` libraries: - -|--lib -| |--Bar -| | |--docs -| | |--examples -| | |--src -| | |- Bar.c -| | |- Bar.h -| |--Foo -| | |- Foo.c -| | |- Foo.h -| |- readme.txt --> THIS FILE -|- platformio.ini -|--src - |- main.c - -Then in `src/main.c` you should use: - -#include -#include - -// rest H/C/CPP code - -PlatformIO will find your libraries automatically, configure preprocessor's -include paths and build them. - -See additional options for PlatformIO Library Dependency Finder `lib_*`: - -http://docs.platformio.org/en/latest/projectconf.html#lib-install - -""") + init_lib_readme(lib_dir) + init_ci_conf(project_dir) if not isfile(project_file): copyfile(join(get_source_dir(), "projectconftpl.ini"), @@ -200,3 +161,91 @@ def _install_dependent_platforms(ctx, platforms): cli_platforms_install, platforms=list(set(platforms) - set(installed_platforms)) ) + + +def init_lib_readme(lib_dir): + if isfile(join(lib_dir, "readme.txt")): + return + with open(join(lib_dir, "readme.txt"), "w") as f: + f.write(""" +This directory is intended for the project specific (private) libraries. +PlatformIO will compile them to static libraries and link to executable file. + +The source code of each library should be placed in separate directory, like +"lib/private_lib/[here are source files]". + +For example, see how can be organised `Foo` and `Bar` libraries: + +|--lib +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| |--Foo +| | |- Foo.c +| | |- Foo.h +| |- readme.txt --> THIS FILE +|- platformio.ini +|--src + |- main.c + +Then in `src/main.c` you should use: + +#include +#include + +// rest H/C/CPP code + +PlatformIO will find your libraries automatically, configure preprocessor's +include paths and build them. + +See additional options for PlatformIO Library Dependency Finder `lib_*`: + +http://docs.platformio.org/en/latest/projectconf.html#lib-install + +""") + + +def init_ci_conf(project_dir): + if isfile(join(project_dir, ".travis.yml")): + return + with open(join(project_dir, ".travis.yml"), "w") as f: + f.write("""# Continuous Integration (CI) is the practice, in software +# engineering, of merging all developer working copies with a shared mainline +# several times a day < http://docs.platformio.org/en/latest/ci/index.html > +# +# Documentation: +# +# * Travis CI Embedded Builds with PlatformIO +# < https://docs.travis-ci.com/user/integration/platformio/ > +# +# * PlatformIO integration with Travis CI +# < http://docs.platformio.org/en/latest/ci/travis.html > +# +# * User Guide for `platformio ci` command +# < http://docs.platformio.org/en/latest/userguide/cmd_ci.html > +# + +language: python +python: + - "2.7" + +# Cache PlatformIO packages using Travis CI container-based infrastructure +sudo: false +cache: + directories: + - "~/.platformio" + +env: + - PLATFORMIO_CI_SRC=path/to/test/file.c + - PLATFORMIO_CI_SRC=examples/file.ino + - PLATFORMIO_CI_SRC=path/to/test/directory + +install: + - pip install -U platformio + +script: + - platformio ci --board=TYPE_1 --board=TYPE_2 --board=TYPE_N +""")