mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Resolve #133: Disabled "prompts" automatically for *Continuous Integration* systems
This commit is contained in:
@ -12,6 +12,8 @@ Release History
|
||||
* Added
|
||||
`Project Configuration <http://docs.platformio.org/en/latest/projectconf.html>`__
|
||||
option named `envs_dir <http://docs.platformio.org/en/latest/projectconf.html#envs-dir>`__
|
||||
* Disabled "prompts" automatically for *Continuous Integration* systems
|
||||
(`issue #103 <https://github.com/ivankravets/platformio/issues/103>`_)
|
||||
* Fixed firmware uploading for
|
||||
`atmelavr <http://docs.platformio.org/en/latest/platforms/atmelavr.html#boards>`__
|
||||
boards which work within ``usbtiny`` protocol
|
||||
|
@ -18,6 +18,19 @@ General
|
||||
PlatformIO uses *General* environment variables for the common
|
||||
operations/commands.
|
||||
|
||||
.. _envvar_CI:
|
||||
|
||||
CI
|
||||
~~
|
||||
|
||||
PlatformIO handles ``CI`` variable which is setup by
|
||||
`Continuous Integration <http://en.wikipedia.org/wiki/Continuous_integration>`_
|
||||
(Travis, Circle and etc.) systems.
|
||||
Currently, PlatformIO uses it to disable prompts.
|
||||
|
||||
In other words, ``CI=true`` automatically setup
|
||||
:ref:`PLATFORMIO_SETTING_ENABLE_PROMPTS=false <envvar_PLATFORMIO_SETTING_ENABLE_PROMPTS>`.
|
||||
|
||||
.. _envvar_PLATFORMIO_HOME_DIR:
|
||||
|
||||
PLATFORMIO_HOME_DIR
|
||||
|
@ -32,11 +32,12 @@ application:
|
||||
.. warning::
|
||||
If you are going to run *PlatformIO* from **subprocess**, you **MUST
|
||||
DISABLE** all prompts. It will allow you to avoid blocking.
|
||||
There are 2 options:
|
||||
There are a few options:
|
||||
|
||||
- using environment variable :ref:`PLATFORMIO_SETTING_ENABLE_PROMPTS=false <envvar_PLATFORMIO_SETTING_ENABLE_PROMPTS>`
|
||||
- disable global setting via :ref:`platformio setting enable_prompts false <cmd_settings>`
|
||||
command.
|
||||
- using environment variable :ref:`PLATFORMIO_SETTING_ENABLE_PROMPTS=No <envvar_PLATFORMIO_SETTING_ENABLE_PROMPTS>`
|
||||
- disable global setting ``enable_prompts`` via :ref:`cmd_settings` command
|
||||
- masking under Continuous Integration system via environment variable
|
||||
:ref:`CI=true <envvar_CI>`.
|
||||
|
||||
Please *choose one of* the following:
|
||||
|
||||
|
@ -86,7 +86,9 @@ better.
|
||||
|
||||
|
||||
.. note::
|
||||
You can override these settings using :ref:`envvars`.
|
||||
* The ``Yes`` value is equl to: ``True``, ``Y``, ``1``.
|
||||
The value is not case sensetive.
|
||||
* You can override these settings using :ref:`envvars`.
|
||||
|
||||
Examples
|
||||
~~~~~~~~
|
||||
|
@ -101,6 +101,10 @@ def set_state_item(name, value):
|
||||
|
||||
|
||||
def get_setting(name):
|
||||
# disable prompts for Continuous Integration systems
|
||||
if name == "enable_prompts" and getenv("CI", "").lower() == "true":
|
||||
return False
|
||||
|
||||
_env_name = "PLATFORMIO_SETTING_%s" % name.upper()
|
||||
if _env_name in environ:
|
||||
return sanitize_setting(name, getenv(_env_name))
|
||||
|
@ -1,28 +1,24 @@
|
||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||
# See LICENSE for details.
|
||||
|
||||
from os import environ
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
import pytest
|
||||
from platformio import app
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def platformio_setup(request):
|
||||
prev_settings = dict(
|
||||
enable_telemetry=None,
|
||||
enable_prompts=None
|
||||
)
|
||||
for key, value in prev_settings.iteritems():
|
||||
prev_settings[key] = app.get_setting(key)
|
||||
# disable temporary
|
||||
if prev_settings[key]:
|
||||
app.set_setting(key, False)
|
||||
pioenvvars = ("ENABLE_PROMPTS", "ENABLE_TELEMETRY")
|
||||
for v in pioenvvars:
|
||||
environ["PLATFORMIO_SETTING_%s" % v] = "No"
|
||||
|
||||
def platformio_teardown():
|
||||
# restore settings
|
||||
for key, value in prev_settings.iteritems():
|
||||
app.set_setting(key, value)
|
||||
for v in pioenvvars:
|
||||
_name = "PLATFORMIO_SETTING_%s" % v
|
||||
if _name in environ:
|
||||
del environ[_name]
|
||||
|
||||
request.addfinalizer(platformio_teardown)
|
||||
|
||||
|
Reference in New Issue
Block a user