lib/modules: make categories class method
This commit is contained in:
@@ -32,7 +32,7 @@ from typing import Any
|
|||||||
from clan_lib.errors import ClanError
|
from clan_lib.errors import ClanError
|
||||||
from clan_lib.services.modules import (
|
from clan_lib.services.modules import (
|
||||||
CategoryInfo,
|
CategoryInfo,
|
||||||
ModuleFrontmatter,
|
ModuleManifest,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get environment variables
|
# Get environment variables
|
||||||
@@ -336,10 +336,9 @@ Learn how to use `clanServices` in practice in the [Using clanServices guide](..
|
|||||||
# output += f"`clan.modules.{module_name}`\n"
|
# output += f"`clan.modules.{module_name}`\n"
|
||||||
output += f"*{module_info['manifest']['description']}*\n"
|
output += f"*{module_info['manifest']['description']}*\n"
|
||||||
|
|
||||||
fm = ModuleFrontmatter("")
|
|
||||||
# output += "## Categories\n\n"
|
# output += "## Categories\n\n"
|
||||||
output += render_categories(
|
output += render_categories(
|
||||||
module_info["manifest"]["categories"], fm.categories_info
|
module_info["manifest"]["categories"], ModuleManifest.categories_info()
|
||||||
)
|
)
|
||||||
|
|
||||||
output += f"{module_info['manifest']['readme']}\n"
|
output += f"{module_info['manifest']['readme']}\n"
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ class ModuleManifest:
|
|||||||
categories: list[str] = field(default_factory=lambda: ["Uncategorized"])
|
categories: list[str] = field(default_factory=lambda: ["Uncategorized"])
|
||||||
features: list[str] = field(default_factory=list)
|
features: list[str] = field(default_factory=list)
|
||||||
|
|
||||||
@property
|
@classmethod
|
||||||
def categories_info(self) -> dict[str, CategoryInfo]:
|
def categories_info(cls) -> dict[str, CategoryInfo]:
|
||||||
category_map: dict[str, CategoryInfo] = {
|
category_map: dict[str, CategoryInfo] = {
|
||||||
"AudioVideo": {
|
"AudioVideo": {
|
||||||
"color": "#AEC6CF",
|
"color": "#AEC6CF",
|
||||||
@@ -54,14 +54,14 @@ class ModuleManifest:
|
|||||||
|
|
||||||
def __post_init__(self) -> None:
|
def __post_init__(self) -> None:
|
||||||
for category in self.categories:
|
for category in self.categories:
|
||||||
if category not in self.categories_info:
|
if category not in ModuleManifest.categories_info():
|
||||||
msg = f"Invalid category: {category}"
|
msg = f"Invalid category: {category}"
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, data: dict) -> "ModuleManifest":
|
def from_dict(cls, data: dict) -> "ModuleManifest":
|
||||||
"""
|
"""
|
||||||
Create an instance of ModuleFrontmatter from a dictionary.
|
Create an instance of this class from a dictionary.
|
||||||
Drops any keys that are not defined in the dataclass.
|
Drops any keys that are not defined in the dataclass.
|
||||||
"""
|
"""
|
||||||
valid = {f.name for f in fields(cls)}
|
valid = {f.name for f in fields(cls)}
|
||||||
|
|||||||
Reference in New Issue
Block a user