44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""CLI entry point for the thesis converter (used by `uv run thesis`)."""
|
|
|
|
import argparse
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from .config import ThesisFormat
|
|
from .converter import ThesisConverter
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="将 Markdown 毕业论文转换为格式化的 Word 文档",
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
epilog=(
|
|
"示例:\n"
|
|
" uv run thesis 论文.md # 输出 论文.docx\n"
|
|
" uv run thesis 论文.md 毕业设计.docx # 指定输出文件名\n"
|
|
),
|
|
)
|
|
parser.add_argument("input", help="输入的 .md 文件路径")
|
|
parser.add_argument("output", nargs="?", default=None,
|
|
help="输出的 .docx 路径(默认自动替换扩展名)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
inp = Path(args.input)
|
|
if not inp.exists():
|
|
print(f"错误:找不到文件 {inp}")
|
|
sys.exit(1)
|
|
|
|
out = Path(args.output) if args.output else inp.with_suffix(".docx")
|
|
|
|
config = ThesisFormat()
|
|
converter = ThesisConverter(config)
|
|
converter.convert(str(inp), str(out))
|
|
|
|
print(f"转换完成:{out}")
|
|
print("提示:在 Word 中打开后,按 Ctrl+A → F9 更新目录和页码。")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|