#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Timestamp: 2026-01-27 # File: src/scitex_writer/project.py """Project management functions. Usage:: import scitex_writer as sw # Create new project from template result = sw.project.clone("./my-new-paper") # Get project info info = sw.project.info("./my-paper") # Get path to compiled PDF pdf = sw.project.get_pdf("./my-paper", "manuscript") """ from typing import Literal, Optional from ._mcp.handlers import clone_project as _clone_project from ._mcp.handlers import get_pdf as _get_pdf from ._mcp.handlers import get_project_info as _get_project_info from ._mcp.handlers import list_document_types as _list_document_types def clone( project_dir: str, git_strategy: Literal["child", "parent", "origin", "none"] = "child", branch: Optional[str] = None, tag: Optional[str] = None, ) -> dict: """Create a new writer project from template. Args: project_dir: Path for the new project. git_strategy: How to handle git: - "child": Fresh git repo (default) - "parent": Keep template history - "origin": Keep as clone of template - "none": No git initialization branch: Clone specific branch. tag: Clone specific tag. Returns: Dict with success status and project_path. """ return _clone_project(project_dir, git_strategy, branch, tag) def info(project_dir: str) -> dict: """Get writer project information. Args: project_dir: Path to scitex-writer project. Returns: Dict with project_name, documents, compiled_pdfs. """ return _get_project_info(project_dir) def get_pdf( project_dir: str, doc_type: Literal["manuscript", "supplementary", "revision"] = "manuscript", ) -> dict: """Get path to compiled PDF. Args: project_dir: Path to scitex-writer project. doc_type: Document type. Returns: Dict with pdf_path if exists. """ return _get_pdf(project_dir, doc_type) def list_document_types() -> dict: """List available document types. Returns: Dict with document_types list. """ return _list_document_types() __all__ = ["clone", "info", "get_pdf", "list_document_types"] # EOF