mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Added support for "owner" requirement when declaring `dependencies
using
library.json`
This commit is contained in:
@ -11,6 +11,7 @@ PlatformIO Core 5
|
||||
5.0.1 (2020-??-??)
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Added support for "owner" requirement when declaring ``dependencies`` using `library.json <https://docs.platformio.org/page/librarymanager/config.html#dependencies>`__
|
||||
- Fixed an issue when using a custom git/ssh package with `platform_packages <https://docs.platformio.org/page/projectconf/section_env_platform.html#platform-packages>`__ option (`issue #3624 <https://github.com/platformio/platformio-core/issues/3624>`_)
|
||||
- Fixed an issue with "ImportError: cannot import name '_get_backend' from 'cryptography.hazmat.backends'" when using `Remote Development <https://docs.platformio.org/page/plus/pio-remote.html>`__ on RaspberryPi device (`issue #3652 <https://github.com/platformio/platformio-core/issues/3652>`_)
|
||||
- Fixed an issue when `pio package unpublish <https://docs.platformio.org/page/core/userguide/package/cmd_unpublish.html>`__ command crashes (`issue #3660 <https://github.com/platformio/platformio-core/issues/3660>`_)
|
||||
|
2
docs
2
docs
Submodule docs updated: 30ff70a4ce...d1043ec065
@ -80,7 +80,9 @@ class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-anc
|
||||
|
||||
def _install_dependency(self, dependency, silent=False):
|
||||
spec = PackageSpec(
|
||||
name=dependency.get("name"), requirements=dependency.get("version")
|
||||
owner=dependency.get("owner"),
|
||||
name=dependency.get("name"),
|
||||
requirements=dependency.get("version"),
|
||||
)
|
||||
search_filters = {
|
||||
key: value
|
||||
|
@ -388,7 +388,15 @@ class LibraryJsonManifestParser(BaseManifestParser):
|
||||
raw = [raw]
|
||||
|
||||
if isinstance(raw, dict):
|
||||
return [dict(name=name, version=version) for name, version in raw.items()]
|
||||
result = []
|
||||
for name, version in raw.items():
|
||||
if "/" in name:
|
||||
owner, name = name.split("/", 1)
|
||||
result.append(dict(owner=owner, name=name, version=version))
|
||||
else:
|
||||
result.append(dict(name=name, version=version))
|
||||
return result
|
||||
|
||||
if isinstance(raw, list):
|
||||
for i, dependency in enumerate(raw):
|
||||
if isinstance(dependency, dict):
|
||||
|
@ -106,6 +106,7 @@ class RepositorySchema(StrictSchema):
|
||||
|
||||
|
||||
class DependencySchema(StrictSchema):
|
||||
owner = fields.Str(validate=validate.Length(min=1, max=100))
|
||||
name = fields.Str(required=True, validate=validate.Length(min=1, max=100))
|
||||
version = fields.Str(validate=validate.Length(min=1, max=100))
|
||||
authors = StrictListField(fields.Str(validate=validate.Length(min=1, max=50)))
|
||||
|
@ -44,7 +44,7 @@ def test_library_json_parser():
|
||||
"dependencies": {
|
||||
"deps1": "1.2.0",
|
||||
"deps2": "https://github.com/username/package.git",
|
||||
"@owner/deps3": "^2.1.3"
|
||||
"owner/deps3": "^2.1.3"
|
||||
},
|
||||
"customField": "Custom Value"
|
||||
}
|
||||
@ -65,9 +65,9 @@ def test_library_json_parser():
|
||||
"homepage": "http://old.url.format",
|
||||
"build": {"flags": ["-DHELLO"]},
|
||||
"dependencies": [
|
||||
{"name": "@owner/deps3", "version": "^2.1.3"},
|
||||
{"name": "deps1", "version": "1.2.0"},
|
||||
{"name": "deps2", "version": "https://github.com/username/package.git"},
|
||||
{"owner": "owner", "name": "deps3", "version": "^2.1.3"},
|
||||
],
|
||||
"customField": "Custom Value",
|
||||
},
|
||||
@ -83,7 +83,7 @@ def test_library_json_parser():
|
||||
},
|
||||
"dependencies": [
|
||||
{"name": "deps1", "version": "1.0.0"},
|
||||
{"name": "@owner/deps2", "version": "1.0.0", "platforms": "*", "frameworks": "arduino, espidf"},
|
||||
{"owner": "owner", "name": "deps2", "version": "1.0.0", "platforms": "*", "frameworks": "arduino, espidf"},
|
||||
{"name": "deps3", "version": "1.0.0", "platforms": ["ststm32", "sifive"]}
|
||||
]
|
||||
}
|
||||
@ -98,13 +98,14 @@ def test_library_json_parser():
|
||||
"export": {"exclude": ["audio_samples"]},
|
||||
"platforms": ["atmelavr"],
|
||||
"dependencies": [
|
||||
{"name": "deps1", "version": "1.0.0"},
|
||||
{
|
||||
"name": "@owner/deps2",
|
||||
"owner": "owner",
|
||||
"name": "deps2",
|
||||
"version": "1.0.0",
|
||||
"platforms": ["*"],
|
||||
"frameworks": ["arduino", "espidf"],
|
||||
},
|
||||
{"name": "deps1", "version": "1.0.0"},
|
||||
{
|
||||
"name": "deps3",
|
||||
"version": "1.0.0",
|
||||
@ -115,16 +116,16 @@ def test_library_json_parser():
|
||||
)
|
||||
|
||||
raw_data = parser.LibraryJsonManifestParser(
|
||||
'{"dependencies": ["dep1", "dep2", "@owner/dep3"]}'
|
||||
'{"dependencies": ["dep1", "dep2", "owner/dep3@1.2.3"]}'
|
||||
).as_dict()
|
||||
raw_data["dependencies"] = sorted(raw_data["dependencies"], key=lambda a: a["name"])
|
||||
assert not jsondiff.diff(
|
||||
raw_data,
|
||||
{
|
||||
"dependencies": [
|
||||
{"name": "@owner/dep3"},
|
||||
{"name": "dep1"},
|
||||
{"name": "dep2"},
|
||||
{"name": "owner/dep3@1.2.3"},
|
||||
],
|
||||
},
|
||||
)
|
||||
|
Reference in New Issue
Block a user