Skip to content

Commit

Permalink
vscode_extension: Add unknown parameters dynamically
Browse files Browse the repository at this point in the history
  • Loading branch information
hw0lff committed Jun 9, 2024
1 parent 78930d6 commit 976b53b
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions scripts/vscode_extension.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from dataclasses import dataclass
import inspect


JSONSchemaType = dict | str | list | int | bool
Expand Down Expand Up @@ -94,9 +95,12 @@ class VscConfigurationProperty:
# my own findings
scope: None | str = None

@staticmethod
def from_dict(data: dict) -> "VscConfigurationProperty":
return VscConfigurationProperty(**data)
@classmethod
def from_dict(cls, data: dict) -> "VscConfigurationProperty":
prop = cls()
for k, v in data.items():
setattr(prop, k, v)
return prop


@dataclass
Expand All @@ -113,8 +117,8 @@ class VscConfiguration:
order: int | None
title: str | None

@staticmethod
def from_dict(data: dict) -> "VscConfiguration":
@classmethod
def from_dict(cls, data: dict) -> "VscConfiguration":
id = data.get("id")
order = data.get("order")
title = data.get("title")
Expand All @@ -132,7 +136,7 @@ def from_dict(data: dict) -> "VscConfiguration":
VscConfigurationPropertyNamed(name, prop)
for name, prop in properties.items()
]
return VscConfiguration(properties, properties_named, id, order, title)
return cls(properties, properties_named, id, order, title)


def conf_is_not_generated(conf: dict) -> bool:
Expand All @@ -148,8 +152,8 @@ class VscExtensionContributions:
configuration: list[VscConfiguration]
rest: dict | None

@staticmethod
def from_dict(data: dict) -> "VscExtensionContributions":
@classmethod
def from_dict(cls, data: dict) -> "VscExtensionContributions":
configuration = data.pop("configuration")
# make it always into a list
if not isinstance(configuration, list):
Expand All @@ -161,7 +165,7 @@ def from_dict(data: dict) -> "VscExtensionContributions":
lambda conf: conf.get("properties") is not None, configuration
)
configuration = [VscConfiguration.from_dict(conf) for conf in configuration]
return VscExtensionContributions(configuration, data)
return cls(configuration, data)


@dataclass
Expand All @@ -170,10 +174,10 @@ class VscExtensionManifest:
contributes: VscExtensionContributions
rest: dict | None

@staticmethod
def from_dict(data: dict) -> "VscExtensionManifest":
@classmethod
def from_dict(cls, data: dict) -> "VscExtensionManifest":
# contributes = data["contributes"]["configuration"]["properties"]
name = data.pop("name")
contributes = data.pop("contributes")
contributes = VscExtensionContributions.from_dict(contributes)
return VscExtensionManifest(name, contributes, data)
return cls(name, contributes, data)

0 comments on commit 976b53b

Please sign in to comment.