#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File: src/scitex_writer/update.py
"""Public API for updating a scitex-writer project's engine files."""
from __future__ import annotations
from typing import Optional
from ._mcp.handlers._update import update_project as _update_project
def project(
project_dir: str = ".",
branch: Optional[str] = None,
tag: Optional[str] = None,
dry_run: bool = False,
force: bool = False,
) -> dict:
"""Update engine files in an existing scitex-writer project.
Replaces build scripts, LaTeX styles, and base templates with the latest
version from the installed scitex-writer package (or GitHub if branch/tag
is specified). User content is never modified.
Engine files updated:
- scripts/ (all shell scripts)
- 00_shared/latex_styles/ (LaTeX style files)
- 01_manuscript/base.tex
- 02_supplementary/base.tex
- 03_revision/base.tex
- compile.sh
- Makefile
User content preserved (never touched):
- 00_shared/authors.tex, title.tex, keywords.tex, journal_name.tex
- 00_shared/bib_files/bibliography.bib
- 00_shared/claims.json
- 01_manuscript/contents/
- 02_supplementary/contents/
- 03_revision/contents/
Parameters
----------
project_dir : str
Path to the scitex-writer project to update (default: current directory).
branch : str, optional
Pull from a specific template branch. Triggers GitHub clone.
tag : str, optional
Pull from a specific template tag/version. Triggers GitHub clone.
dry_run : bool
If True, report what would change without modifying any files.
Returns
-------
dict
- success (bool)
- updated_paths (list[str])
- skipped_paths (list[str])
- preserved_paths (list[str])
- dry_run (bool)
- message (str)
- error (str, only on failure)
Examples
--------
>>> import scitex_writer as sw
>>> sw.update.project("~/proj/my-paper", dry_run=True)
>>> sw.update.project("~/proj/my-paper")
>>> sw.update.project("~/proj/my-paper", tag="v2.7.1")
"""
return _update_project(
project_dir, branch=branch, tag=tag, dry_run=dry_run, force=force
)
__all__ = ["project"]
# EOF