Skip to content

Commit 326c249

Browse files
committed
Merge branch 'release/v5.2.3'
2 parents e964c7f + 133fa14 commit 326c249

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+562
-432
lines changed

.coveragerc

-21
This file was deleted.

.github/workflows/docs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
- name: Deploy to Github Pages
104104
uses: peaceiris/actions-gh-pages@v3
105105
with:
106-
personal_token: ${{ secrets.PERSONAL_TOKEN }}
106+
personal_token: ${{ secrets.DEPLOY_GH_DOCS_TOKEN }}
107107
external_repository: ${{ env.DOCS_REPO }}
108108
publish_dir: ./${{ env.DOCS_DIR }}
109109
commit_message: Sync Docs

.readthedocs.yml

-12
This file was deleted.

HISTORY.rst

+65-50
Large diffs are not rendered by default.

docs

Submodule docs updated 52 files

platformio/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import sys
1616

17-
VERSION = (5, 2, 2)
17+
VERSION = (5, 2, 3)
1818
__version__ = ".".join([str(s) for s in VERSION])
1919

2020
__title__ = "platformio"
@@ -47,7 +47,7 @@
4747
__default_requests_timeout__ = (10, None) # (connect, read)
4848

4949
__core_packages__ = {
50-
"contrib-piohome": "~3.3.4",
50+
"contrib-piohome": "~3.4.0",
5151
"contrib-pysite": "~2.%d%d.0" % (sys.version_info.major, sys.version_info.minor),
5252
"tool-unity": "~1.20500.0",
5353
"tool-scons": "~4.40200.0",

platformio/app.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@
2121
import platform
2222
import socket
2323
import uuid
24-
from os.path import dirname, isdir, isfile, join, realpath
2524

2625
from platformio import __version__, exception, fs, proc
2726
from platformio.compat import IS_WINDOWS, hashlib_encode_data
2827
from platformio.package.lockfile import LockFile
29-
from platformio.project.helpers import get_default_projects_dir, get_project_core_dir
28+
from platformio.project.config import ProjectConfig
29+
from platformio.project.helpers import get_default_projects_dir
3030

3131

3232
def projects_dir_validate(projects_dir):
33-
assert isdir(projects_dir)
34-
return realpath(projects_dir)
33+
assert os.path.isdir(projects_dir)
34+
return os.path.realpath(projects_dir)
3535

3636

3737
DEFAULT_SETTINGS = {
@@ -64,7 +64,7 @@ def projects_dir_validate(projects_dir):
6464
"value": True,
6565
},
6666
"enable_telemetry": {
67-
"description": ("Telemetry service <http://bit.ly/pio-telemetry> (Yes/No)"),
67+
"description": ("Telemetry service <https://bit.ly/pio-telemetry> (Yes/No)"),
6868
"value": True,
6969
},
7070
"force_verbose": {
@@ -91,15 +91,18 @@ def __init__(self, path=None, lock=False):
9191
self.path = path
9292
self.lock = lock
9393
if not self.path:
94-
self.path = join(get_project_core_dir(), "appstate.json")
94+
core_dir = ProjectConfig.get_instance().get("platformio", "core_dir")
95+
if not os.path.isdir(core_dir):
96+
os.makedirs(core_dir)
97+
self.path = os.path.join(core_dir, "appstate.json")
9598
self._storage = {}
9699
self._lockfile = None
97100
self.modified = False
98101

99102
def __enter__(self):
100103
try:
101104
self._lock_state_file()
102-
if isfile(self.path):
105+
if os.path.isfile(self.path):
103106
self._storage = fs.load_json(self.path)
104107
assert isinstance(self._storage, dict)
105108
except (
@@ -117,7 +120,7 @@ def __exit__(self, type_, value, traceback):
117120
with open(self.path, mode="w", encoding="utf8") as fp:
118121
fp.write(json.dumps(self._storage))
119122
except IOError:
120-
raise exception.HomeDirPermissionsError(get_project_core_dir())
123+
raise exception.HomeDirPermissionsError(os.path.dirname(self.path))
121124
self._unlock_state_file()
122125

123126
def _lock_state_file(self):
@@ -127,7 +130,7 @@ def _lock_state_file(self):
127130
try:
128131
self._lockfile.acquire()
129132
except IOError:
130-
raise exception.HomeDirPermissionsError(dirname(self.path))
133+
raise exception.HomeDirPermissionsError(os.path.dirname(self.path))
131134

132135
def _unlock_state_file(self):
133136
if hasattr(self, "_lockfile") and self._lockfile:

platformio/builder/main.py

+14-14
Original file line numberDiff line numberDiff line change
@@ -109,22 +109,22 @@
109109
config = env.GetProjectConfig()
110110
env.Replace(
111111
PROJECT_DIR=get_project_dir(),
112-
PROJECT_CORE_DIR=config.get_optional_dir("core"),
113-
PROJECT_PACKAGES_DIR=config.get_optional_dir("packages"),
114-
PROJECT_WORKSPACE_DIR=config.get_optional_dir("workspace"),
115-
PROJECT_LIBDEPS_DIR=config.get_optional_dir("libdeps"),
116-
PROJECT_INCLUDE_DIR=config.get_optional_dir("include"),
117-
PROJECT_SRC_DIR=config.get_optional_dir("src"),
118-
PROJECTSRC_DIR=config.get_optional_dir("src"), # legacy for dev/platform
119-
PROJECT_TEST_DIR=config.get_optional_dir("test"),
120-
PROJECT_DATA_DIR=config.get_optional_dir("data"),
121-
PROJECTDATA_DIR=config.get_optional_dir("data"), # legacy for dev/platform
122-
PROJECT_BUILD_DIR=config.get_optional_dir("build"),
123-
BUILD_CACHE_DIR=config.get_optional_dir("build_cache"),
112+
PROJECT_CORE_DIR=config.get("platformio", "core_dir"),
113+
PROJECT_PACKAGES_DIR=config.get("platformio", "packages_dir"),
114+
PROJECT_WORKSPACE_DIR=config.get("platformio", "workspace_dir"),
115+
PROJECT_LIBDEPS_DIR=config.get("platformio", "libdeps_dir"),
116+
PROJECT_INCLUDE_DIR=config.get("platformio", "include_dir"),
117+
PROJECT_SRC_DIR=config.get("platformio", "src_dir"),
118+
PROJECTSRC_DIR=config.get("platformio", "src_dir"), # legacy for dev/platform
119+
PROJECT_TEST_DIR=config.get("platformio", "test_dir"),
120+
PROJECT_DATA_DIR=config.get("platformio", "data_dir"),
121+
PROJECTDATA_DIR=config.get("platformio", "data_dir"), # legacy for dev/platform
122+
PROJECT_BUILD_DIR=config.get("platformio", "build_dir"),
123+
BUILD_CACHE_DIR=config.get("platformio", "build_cache_dir"),
124124
LIBSOURCE_DIRS=[
125-
config.get_optional_dir("lib"),
125+
config.get("platformio", "lib_dir"),
126126
os.path.join("$PROJECT_LIBDEPS_DIR", "$PIOENV"),
127-
config.get_optional_dir("globallib"),
127+
config.get("platformio", "globallib_dir"),
128128
],
129129
)
130130

platformio/builder/tools/pioide.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def _dump_includes(env):
6363
# include Unity framework if there are tests in project
6464
includes["unity"] = []
6565
auto_install_unity = False
66-
test_dir = env.GetProjectConfig().get_optional_dir("test")
66+
test_dir = env.GetProjectConfig().get("platformio", "test_dir")
6767
if os.path.isdir(test_dir) and os.listdir(test_dir) != ["README"]:
6868
auto_install_unity = True
6969
unity_dir = get_core_package_dir(

platformio/builder/tools/piolib.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,7 @@ def _print_deps_tree(root, level=0):
10951095
project = ProjectAsLibBuilder(env, "$PROJECT_DIR")
10961096
ldf_mode = LibBuilderBase.lib_ldf_mode.fget(project) # pylint: disable=no-member
10971097

1098-
click.echo("LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf")
1098+
click.echo("LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf")
10991099
click.echo(
11001100
"LDF Modes: Finder ~ %s, Compatibility ~ %s"
11011101
% (ldf_mode, project.lib_compat_mode)

platformio/commands/check/command.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ def cli(
106106
)
107107

108108
default_patterns = [
109-
config.get_optional_dir("src"),
110-
config.get_optional_dir("include"),
109+
config.get("platformio", "src_dir"),
110+
config.get("platformio", "include_dir"),
111111
]
112112
tool_options = dict(
113113
verbose=verbose,

platformio/commands/check/tools/clangtidy.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def configure_command(self):
7777
includes = []
7878
for inc in self.cpp_includes:
7979
if self.options.get("skip_packages") and inc.lower().startswith(
80-
self.config.get_optional_dir("packages").lower()
80+
self.config.get("platformio", "packages_dir").lower()
8181
):
8282
continue
8383
includes.append(inc)

platformio/commands/check/tools/cppcheck.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def parse_defect(self, raw_line):
8484
if (
8585
args.get("file", "")
8686
.lower()
87-
.startswith(self.config.get_optional_dir("packages").lower())
87+
.startswith(self.config.get("platformio", "packages_dir").lower())
8888
):
8989
if args["id"] in breaking_defect_ids:
9090
if self.options.get("verbose"):
@@ -201,7 +201,7 @@ def _generate_inc_file(self):
201201
result = []
202202
for inc in self.cpp_includes:
203203
if self.options.get("skip_packages") and inc.lower().startswith(
204-
self.config.get_optional_dir("packages").lower()
204+
self.config.get("platformio", "packages_dir").lower()
205205
):
206206
continue
207207
result.append(inc)

platformio/commands/check/tools/pvsstudio.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def __init__(self, *args, **kwargs):
4343
with open(self._tmp_cfg_file, mode="w", encoding="utf8") as fp:
4444
fp.write(
4545
"exclude-path = "
46-
+ self.config.get_optional_dir("packages").replace("\\", "/")
46+
+ self.config.get("platformio", "packages_dir").replace("\\", "/")
4747
)
4848

4949
with open(self._tmp_cmd_file, mode="w", encoding="utf8") as fp:

platformio/commands/device/command.py

+9-16
Original file line numberDiff line numberDiff line change
@@ -172,28 +172,21 @@ def device_list( # pylint: disable=too-many-branches
172172
help="Load configuration from `platformio.ini` and specified environment",
173173
)
174174
def device_monitor(**kwargs): # pylint: disable=too-many-branches
175-
# load default monitor filters
176-
filters_dir = os.path.join(fs.get_source_dir(), "commands", "device", "filters")
177-
for name in os.listdir(filters_dir):
178-
if not name.endswith(".py"):
179-
continue
180-
device_helpers.load_monitor_filter(
181-
os.path.join(filters_dir, name), options=kwargs
182-
)
183-
184175
project_options = {}
176+
platform = None
185177
try:
186178
with fs.cd(kwargs["project_dir"]):
187179
project_options = device_helpers.get_project_options(kwargs["environment"])
188-
kwargs = device_helpers.apply_project_monitor_options(kwargs, project_options)
180+
kwargs = device_helpers.apply_project_monitor_options(
181+
kwargs, project_options
182+
)
183+
if "platform" in project_options:
184+
platform = PlatformFactory.new(project_options["platform"])
189185
except NotPlatformIOProjectError:
190186
pass
191187

192-
platform = None
193-
if "platform" in project_options:
194-
with fs.cd(kwargs["project_dir"]):
195-
platform = PlatformFactory.new(project_options["platform"])
196-
device_helpers.register_platform_filters(platform, options=kwargs)
188+
with fs.cd(kwargs["project_dir"]):
189+
device_helpers.register_filters(platform=platform, options=kwargs)
197190

198191
if not kwargs["port"]:
199192
ports = util.get_serial_ports(filter_hwid=True)
@@ -231,7 +224,7 @@ def device_monitor(**kwargs): # pylint: disable=too-many-branches
231224
"--- Available filters and text transformations: %s"
232225
% ", ".join(sorted(miniterm.TRANSFORMATIONS.keys()))
233226
)
234-
click.echo("--- More details at http://bit.ly/pio-monitor-filters")
227+
click.echo("--- More details at https://bit.ly/pio-monitor-filters")
235228
try:
236229
miniterm.main(
237230
default_port=kwargs["port"],

platformio/commands/device/helpers.py

+30-4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from platformio import fs
2121
from platformio.commands.device import DeviceMonitorFilter
2222
from platformio.compat import get_object_members, load_python_module
23+
from platformio.package.manager.tool import ToolPackageManager
2324
from platformio.project.config import ProjectConfig
2425

2526

@@ -92,15 +93,40 @@ def load_monitor_filter(path, options=None):
9293
return True
9394

9495

95-
def register_platform_filters(platform, options=None):
96-
monitor_dir = os.path.join(platform.get_dir(), "monitor")
96+
def load_monitor_filters(monitor_dir, prefix=None, options=None):
9797
if not os.path.isdir(monitor_dir):
9898
return
99-
10099
for name in os.listdir(monitor_dir):
101-
if not name.startswith("filter_") or not name.endswith(".py"):
100+
if (prefix and not name.startswith(prefix)) or not name.endswith(".py"):
102101
continue
103102
path = os.path.join(monitor_dir, name)
104103
if not os.path.isfile(path):
105104
continue
106105
load_monitor_filter(path, options)
106+
107+
108+
def register_filters(platform=None, options=None):
109+
# project filters
110+
load_monitor_filters(
111+
ProjectConfig.get_instance().get("platformio", "monitor_dir"),
112+
prefix="filter_",
113+
options=options,
114+
)
115+
# platform filters
116+
if platform:
117+
load_monitor_filters(
118+
os.path.join(platform.get_dir(), "monitor"),
119+
prefix="filter_",
120+
options=options,
121+
)
122+
# load package filters
123+
pm = ToolPackageManager()
124+
for pkg in pm.get_installed():
125+
load_monitor_filters(
126+
os.path.join(pkg.path, "monitor"), prefix="filter_", options=options
127+
)
128+
# default filters
129+
load_monitor_filters(
130+
os.path.join(fs.get_source_dir(), "commands", "device", "filters"),
131+
options=options,
132+
)

0 commit comments

Comments
 (0)