Loading...
No commits yet
Not committed History
Blame
_trees.py • 1.5 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File: src/scitex_writer/_project/_trees.py

"""
Document tree creation for writer module.

Creates and initializes document tree objects for manuscript, supplementary,
revision, and scripts.
"""

from __future__ import annotations

from logging import getLogger
from pathlib import Path
from typing import Optional, Tuple

from .._dataclasses import ManuscriptTree, RevisionTree, SupplementaryTree
from .._dataclasses.tree import ScriptsTree

logger = getLogger(__name__)


def create_document_trees(
    project_dir: Path,
    git_root: Optional[Path],
) -> Tuple[ManuscriptTree, SupplementaryTree, RevisionTree, ScriptsTree]:
    """
    Create document tree objects for writer project.

    Parameters
    ----------
    project_dir : Path
        Path to project directory
    git_root : Path or None
        Path to git root (for efficiency)

    Returns
    -------
    tuple
        (manuscript, supplementary, revision, scripts) tree objects
    """
    manuscript = ManuscriptTree(project_dir / "01_manuscript", git_root=git_root)
    supplementary = SupplementaryTree(
        project_dir / "02_supplementary", git_root=git_root
    )
    revision = RevisionTree(project_dir / "03_revision", git_root=git_root)
    scripts = ScriptsTree(project_dir / "scripts", git_root=git_root)

    logger.info("Document trees initialized")

    return manuscript, supplementary, revision, scripts


__all__ = ["create_document_trees"]

# EOF