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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 E05kEqE&u=k literal 0 HcmV?d00001 diff --git a/docs/ci/travis.rst b/docs/ci/travis.rst index 691018cf..ad1949ee 100644 --- a/docs/ci/travis.rst +++ b/docs/ci/travis.rst @@ -14,6 +14,13 @@ Travis CI ========= +.. image:: ../_static/ci-travis-logo.png + :target: https://docs.travis-ci.com/user/integration/platformio/ + + +**Travis CI** `officially supports `_ +**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 +""")