46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
import os
|
|
import json
|
|
from typing import Dict, Any, List
|
|
|
|
|
|
class GroupManager:
|
|
def __init__(self, script_groups_path: str):
|
|
self.script_groups_path = script_groups_path
|
|
|
|
def get_script_groups(self) -> List[Dict[str, Any]]:
|
|
"""Returns list of available script groups with their descriptions."""
|
|
groups = []
|
|
if not os.path.isdir(self.script_groups_path):
|
|
print(
|
|
f"Warning: Script groups directory not found: {self.script_groups_path}"
|
|
)
|
|
return []
|
|
|
|
for d in os.listdir(self.script_groups_path):
|
|
group_path = os.path.join(self.script_groups_path, d)
|
|
if os.path.isdir(group_path):
|
|
description = self._get_group_description(group_path)
|
|
groups.append(
|
|
{
|
|
"id": d,
|
|
"name": description.get("name", d),
|
|
"description": description.get(
|
|
"description", "Sin descripción"
|
|
),
|
|
"version": description.get("version", "1.0"),
|
|
"author": description.get("author", "Unknown"),
|
|
}
|
|
)
|
|
return groups
|
|
|
|
def _get_group_description(self, group_path: str) -> Dict[str, Any]:
|
|
"""Get description for a script group."""
|
|
description_file = os.path.join(group_path, "description.json")
|
|
try:
|
|
if os.path.exists(description_file):
|
|
with open(description_file, "r", encoding="utf-8") as f:
|
|
return json.load(f)
|
|
except Exception as e:
|
|
print(f"Error reading group description from {description_file}: {e}")
|
|
return {}
|