| from __future__ import annotations |
|
|
| import json |
| from pathlib import Path |
| from typing import Any |
|
|
|
|
| def projects_root() -> Path: |
| root = Path("projects") |
| root.mkdir(parents=True, exist_ok=True) |
| return root |
|
|
|
|
| def create_project_dir(tenant_id: str, project_id: str) -> Path: |
| base = projects_root() / tenant_id / project_id |
| base.mkdir(parents=True, exist_ok=True) |
| return base |
|
|
|
|
| def write_artifact_text(base: Path, name: str, content: str) -> None: |
| (base / name).write_text(content) |
|
|
|
|
| def write_artifact_json(base: Path, name: str, obj: Any) -> None: |
| (base / name).write_text(json.dumps(obj, indent=2)) |
|
|
|
|
|
|
|
|