5769c1cd22
- Auto-Registration-Bug behoben (register_project/get_project_id/resolve_project Trennung) - 25 Tests gruen (Pytest) - block_compactor-Tool refactored (Option B: Soft-Check statt Hard-Block) - 4 Restbaustellen gefixt - DB-Schema: plugin_settings-Tabelle hinzugefuegt - 3 Schattenprojekte aus DB geloescht - Plan v3 + Refactor-Plan + Worklog dokumentiert
35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
"""Validators for plugin configuration and project artifacts."""
|
|
import os
|
|
import yaml
|
|
from typing import Dict, Any, List
|
|
|
|
|
|
def validate_config(config_path: str) -> Dict[str, Any]:
|
|
"""Validate default_config.yaml and return errors."""
|
|
errors = []
|
|
if not os.path.exists(config_path):
|
|
return {"valid": False, "errors": ["config file not found"]}
|
|
try:
|
|
with open(config_path, "r") as f:
|
|
config = yaml.safe_load(f)
|
|
if not isinstance(config, dict):
|
|
errors.append("config is not a mapping")
|
|
except Exception as e:
|
|
errors.append(f"YAML parse error: {e}")
|
|
return {"valid": len(errors) == 0, "errors": errors}
|
|
|
|
|
|
def validate_project_init(project_root: str) -> List[str]:
|
|
"""Validate that a project has been properly initialized."""
|
|
required_dirs = [
|
|
".a0",
|
|
"specs/current",
|
|
"docs",
|
|
"deploy",
|
|
]
|
|
missing = []
|
|
for d in required_dirs:
|
|
if not os.path.isdir(os.path.join(project_root, d)):
|
|
missing.append(d)
|
|
return missing
|