mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 18:17:13 +02:00
Minor fixes for dev-platform factory
This commit is contained in:
@ -149,9 +149,16 @@ def PrintConfiguration(env): # pylint: disable=too-many-statements
|
|||||||
def _get_plaform_data():
|
def _get_plaform_data():
|
||||||
data = [
|
data = [
|
||||||
"PLATFORM: %s (%s)"
|
"PLATFORM: %s (%s)"
|
||||||
% (platform.title, pkg_metadata.version or platform.version)
|
% (
|
||||||
|
platform.title,
|
||||||
|
pkg_metadata.version if pkg_metadata else platform.version,
|
||||||
|
)
|
||||||
]
|
]
|
||||||
if int(ARGUMENTS.get("PIOVERBOSE", 0)) and pkg_metadata.spec.external:
|
if (
|
||||||
|
int(ARGUMENTS.get("PIOVERBOSE", 0))
|
||||||
|
and pkg_metadata
|
||||||
|
and pkg_metadata.spec.external
|
||||||
|
):
|
||||||
data.append("(%s)" % pkg_metadata.spec.url)
|
data.append("(%s)" % pkg_metadata.spec.url)
|
||||||
if board_config:
|
if board_config:
|
||||||
data.extend([">", board_config.get("name")])
|
data.extend([">", board_config.get("name")])
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from platformio import fs
|
||||||
from platformio.compat import load_python_module
|
from platformio.compat import load_python_module
|
||||||
from platformio.package.meta import PackageItem
|
from platformio.package.meta import PackageItem
|
||||||
from platformio.platform.base import PlatformBase
|
from platformio.platform.base import PlatformBase
|
||||||
@ -36,32 +37,47 @@ class PlatformFactory(object):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def new(cls, pkg_or_spec):
|
def new(cls, pkg_or_spec):
|
||||||
|
platform_dir = None
|
||||||
|
platform_name = None
|
||||||
if isinstance(pkg_or_spec, PackageItem):
|
if isinstance(pkg_or_spec, PackageItem):
|
||||||
pkg = pkg_or_spec
|
platform_dir = pkg_or_spec.path
|
||||||
|
platform_name = pkg_or_spec.metadata.name
|
||||||
|
elif os.path.isdir(pkg_or_spec):
|
||||||
|
platform_dir = pkg_or_spec
|
||||||
else:
|
else:
|
||||||
from platformio.package.manager.platform import ( # pylint: disable=import-outside-toplevel
|
from platformio.package.manager.platform import ( # pylint: disable=import-outside-toplevel
|
||||||
PlatformPackageManager,
|
PlatformPackageManager,
|
||||||
)
|
)
|
||||||
|
|
||||||
pkg = PlatformPackageManager().get_package(
|
pkg = PlatformPackageManager().get_package(pkg_or_spec)
|
||||||
"file://%s" % pkg_or_spec if os.path.isdir(pkg_or_spec) else pkg_or_spec
|
if not pkg:
|
||||||
)
|
raise UnknownPlatform(pkg_or_spec)
|
||||||
if not pkg:
|
platform_dir = pkg.path
|
||||||
|
platform_name = pkg.metadata.name
|
||||||
|
|
||||||
|
if not platform_dir or not os.path.isfile(
|
||||||
|
os.path.join(platform_dir, "platform.json")
|
||||||
|
):
|
||||||
raise UnknownPlatform(pkg_or_spec)
|
raise UnknownPlatform(pkg_or_spec)
|
||||||
|
|
||||||
|
if not platform_name:
|
||||||
|
platform_name = fs.load_json(os.path.join(platform_dir, "platform.json"))[
|
||||||
|
"name"
|
||||||
|
]
|
||||||
|
|
||||||
platform_cls = None
|
platform_cls = None
|
||||||
if os.path.isfile(os.path.join(pkg.path, "platform.py")):
|
if os.path.isfile(os.path.join(platform_dir, "platform.py")):
|
||||||
platform_cls = getattr(
|
platform_cls = getattr(
|
||||||
cls.load_module(
|
cls.load_module(
|
||||||
pkg.metadata.name, os.path.join(pkg.path, "platform.py")
|
platform_name, os.path.join(platform_dir, "platform.py")
|
||||||
),
|
),
|
||||||
cls.get_clsname(pkg.metadata.name),
|
cls.get_clsname(platform_name),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
platform_cls = type(
|
platform_cls = type(
|
||||||
str(cls.get_clsname(pkg.metadata.name)), (PlatformBase,), {}
|
str(cls.get_clsname(platform_name)), (PlatformBase,), {}
|
||||||
)
|
)
|
||||||
|
|
||||||
_instance = platform_cls(os.path.join(pkg.path, "platform.json"))
|
_instance = platform_cls(os.path.join(platform_dir, "platform.json"))
|
||||||
assert isinstance(_instance, PlatformBase)
|
assert isinstance(_instance, PlatformBase)
|
||||||
return _instance
|
return _instance
|
||||||
|
Reference in New Issue
Block a user