forked from platformio/platformio-core
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-??-??)
|
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 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 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>`_)
|
- 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):
|
def _install_dependency(self, dependency, silent=False):
|
||||||
spec = PackageSpec(
|
spec = PackageSpec(
|
||||||
name=dependency.get("name"), requirements=dependency.get("version")
|
owner=dependency.get("owner"),
|
||||||
|
name=dependency.get("name"),
|
||||||
|
requirements=dependency.get("version"),
|
||||||
)
|
)
|
||||||
search_filters = {
|
search_filters = {
|
||||||
key: value
|
key: value
|
||||||
|
@ -388,7 +388,15 @@ class LibraryJsonManifestParser(BaseManifestParser):
|
|||||||
raw = [raw]
|
raw = [raw]
|
||||||
|
|
||||||
if isinstance(raw, dict):
|
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):
|
if isinstance(raw, list):
|
||||||
for i, dependency in enumerate(raw):
|
for i, dependency in enumerate(raw):
|
||||||
if isinstance(dependency, dict):
|
if isinstance(dependency, dict):
|
||||||
|
@ -106,6 +106,7 @@ class RepositorySchema(StrictSchema):
|
|||||||
|
|
||||||
|
|
||||||
class DependencySchema(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))
|
name = fields.Str(required=True, validate=validate.Length(min=1, max=100))
|
||||||
version = fields.Str(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)))
|
authors = StrictListField(fields.Str(validate=validate.Length(min=1, max=50)))
|
||||||
|
@ -44,7 +44,7 @@ def test_library_json_parser():
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"deps1": "1.2.0",
|
"deps1": "1.2.0",
|
||||||
"deps2": "https://github.com/username/package.git",
|
"deps2": "https://github.com/username/package.git",
|
||||||
"@owner/deps3": "^2.1.3"
|
"owner/deps3": "^2.1.3"
|
||||||
},
|
},
|
||||||
"customField": "Custom Value"
|
"customField": "Custom Value"
|
||||||
}
|
}
|
||||||
@ -65,9 +65,9 @@ def test_library_json_parser():
|
|||||||
"homepage": "http://old.url.format",
|
"homepage": "http://old.url.format",
|
||||||
"build": {"flags": ["-DHELLO"]},
|
"build": {"flags": ["-DHELLO"]},
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{"name": "@owner/deps3", "version": "^2.1.3"},
|
|
||||||
{"name": "deps1", "version": "1.2.0"},
|
{"name": "deps1", "version": "1.2.0"},
|
||||||
{"name": "deps2", "version": "https://github.com/username/package.git"},
|
{"name": "deps2", "version": "https://github.com/username/package.git"},
|
||||||
|
{"owner": "owner", "name": "deps3", "version": "^2.1.3"},
|
||||||
],
|
],
|
||||||
"customField": "Custom Value",
|
"customField": "Custom Value",
|
||||||
},
|
},
|
||||||
@ -83,7 +83,7 @@ def test_library_json_parser():
|
|||||||
},
|
},
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{"name": "deps1", "version": "1.0.0"},
|
{"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"]}
|
{"name": "deps3", "version": "1.0.0", "platforms": ["ststm32", "sifive"]}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -98,13 +98,14 @@ def test_library_json_parser():
|
|||||||
"export": {"exclude": ["audio_samples"]},
|
"export": {"exclude": ["audio_samples"]},
|
||||||
"platforms": ["atmelavr"],
|
"platforms": ["atmelavr"],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
|
{"name": "deps1", "version": "1.0.0"},
|
||||||
{
|
{
|
||||||
"name": "@owner/deps2",
|
"owner": "owner",
|
||||||
|
"name": "deps2",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"platforms": ["*"],
|
"platforms": ["*"],
|
||||||
"frameworks": ["arduino", "espidf"],
|
"frameworks": ["arduino", "espidf"],
|
||||||
},
|
},
|
||||||
{"name": "deps1", "version": "1.0.0"},
|
|
||||||
{
|
{
|
||||||
"name": "deps3",
|
"name": "deps3",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -115,16 +116,16 @@ def test_library_json_parser():
|
|||||||
)
|
)
|
||||||
|
|
||||||
raw_data = parser.LibraryJsonManifestParser(
|
raw_data = parser.LibraryJsonManifestParser(
|
||||||
'{"dependencies": ["dep1", "dep2", "@owner/dep3"]}'
|
'{"dependencies": ["dep1", "dep2", "owner/dep3@1.2.3"]}'
|
||||||
).as_dict()
|
).as_dict()
|
||||||
raw_data["dependencies"] = sorted(raw_data["dependencies"], key=lambda a: a["name"])
|
raw_data["dependencies"] = sorted(raw_data["dependencies"], key=lambda a: a["name"])
|
||||||
assert not jsondiff.diff(
|
assert not jsondiff.diff(
|
||||||
raw_data,
|
raw_data,
|
||||||
{
|
{
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{"name": "@owner/dep3"},
|
|
||||||
{"name": "dep1"},
|
{"name": "dep1"},
|
||||||
{"name": "dep2"},
|
{"name": "dep2"},
|
||||||
|
{"name": "owner/dep3@1.2.3"},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user