mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 18:17:13 +02:00
Implement project.configuration endpoint
This commit is contained in:
@ -25,6 +25,7 @@ from platformio.home.rpc.handlers.app import AppRPC
|
|||||||
from platformio.home.rpc.handlers.base import BaseRPCHandler
|
from platformio.home.rpc.handlers.base import BaseRPCHandler
|
||||||
from platformio.home.rpc.handlers.piocore import PIOCoreRPC
|
from platformio.home.rpc.handlers.piocore import PIOCoreRPC
|
||||||
from platformio.package.manager.platform import PlatformPackageManager
|
from platformio.package.manager.platform import PlatformPackageManager
|
||||||
|
from platformio.platform.factory import PlatformFactory
|
||||||
from platformio.project.config import ProjectConfig
|
from platformio.project.config import ProjectConfig
|
||||||
from platformio.project.exception import ProjectError
|
from platformio.project.exception import ProjectError
|
||||||
from platformio.project.helpers import get_project_dir, is_platformio_project
|
from platformio.project.helpers import get_project_dir, is_platformio_project
|
||||||
@ -339,3 +340,47 @@ class ProjectRPC(BaseRPCHandler):
|
|||||||
encoding="utf-8",
|
encoding="utf-8",
|
||||||
)
|
)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def configuration(project_dir, env):
|
||||||
|
assert is_platformio_project(project_dir)
|
||||||
|
with fs.cd(project_dir):
|
||||||
|
config = ProjectConfig(os.path.join(project_dir, "platformio.ini"))
|
||||||
|
platform = PlatformFactory.from_env(env, autoinstall=True)
|
||||||
|
platform_pkg = PlatformPackageManager().get_package(platform.get_dir())
|
||||||
|
board_id = config.get(f"env:{env}", "board", None)
|
||||||
|
|
||||||
|
# frameworks
|
||||||
|
frameworks = []
|
||||||
|
for name in config.get(f"env:{env}", "framework", []):
|
||||||
|
if name not in platform.frameworks:
|
||||||
|
continue
|
||||||
|
f_pkg_name = platform.frameworks[name].get("package")
|
||||||
|
if not f_pkg_name:
|
||||||
|
continue
|
||||||
|
f_pkg = platform.get_package(f_pkg_name)
|
||||||
|
if not f_pkg:
|
||||||
|
continue
|
||||||
|
f_manifest = platform.pm.load_manifest(f_pkg)
|
||||||
|
frameworks.append(
|
||||||
|
dict(
|
||||||
|
name=name,
|
||||||
|
title=f_manifest.get("title"),
|
||||||
|
version=str(f_pkg.metadata.version),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return dict(
|
||||||
|
platform=dict(
|
||||||
|
ownername=platform_pkg.metadata.spec.owner
|
||||||
|
if platform_pkg.metadata.spec
|
||||||
|
else None,
|
||||||
|
name=platform.name,
|
||||||
|
title=platform.title,
|
||||||
|
version=str(platform_pkg.metadata.version),
|
||||||
|
),
|
||||||
|
board=platform.board_config(board_id).get_brief_data()
|
||||||
|
if board_id
|
||||||
|
else None,
|
||||||
|
frameworks=frameworks or None,
|
||||||
|
)
|
||||||
|
Reference in New Issue
Block a user