Source code for fenn.export.exporter

from pathlib import Path
from typing import Any, Dict, Optional


[docs] class Exporter: """Singleton responsible for managing a single export directory.""" _instance: Optional["Exporter"] = None def __new__(cls) -> "Exporter": if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance
[docs] def __init__(self) -> None: if getattr(self, "_initialized", False): return self._export_dir = Path("export/fenn") self._initialized = True
[docs] def configure(self, args: Dict[str, Any]) -> Path: """Configure the export directory from arguments.""" export_conf = args.get("export", {}) or {} export_dir = export_conf.get("dir", "export") export_dir = Path(export_dir) export_dir.mkdir(parents=True, exist_ok=True) export_project_dir = args.get("project", "fenn") export_project_dir = export_dir / export_project_dir export_project_dir.mkdir(parents=True, exist_ok=True) self._export_dir = export_project_dir return self._export_dir
@property def export_dir(self) -> Path: """Return the export directory, ensuring it exists.""" self._export_dir.mkdir(parents=True, exist_ok=True) return self._export_dir