1
0
Fork 0
mirror of https://github.com/EDeev/converterbot.git synced 2026-10-07 20:49:33 +03:00
converterbot/md2gost/cli.py
Egor Deev 7b8e3ce61a md2gost: пакет и командная строка
pip install md2gost → md2gost report.md [-o out.docx] с параметрами шрифта, размера,
интервала и нумерации; также python -m md2gost.
2026-10-05 23:24:29 +00:00

47 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import argparse
import sys
from pathlib import Path
from . import __version__
from .converter import DocumentSettings, MarkdownToDocxConverter
def build_parser():
parser = argparse.ArgumentParser(
prog="md2gost",
description="Конвертирует Markdown в DOCX, оформленный по ГОСТ 7.32-2017: поля, шрифт, интервалы, "
"нумерация страниц и заголовков, таблицы, списки, сноски, список литературы.",
)
parser.add_argument("input", type=Path, help="файл .md")
parser.add_argument("-o", "--output", type=Path, help="куда сохранить .docx (по умолчанию — рядом с .md)")
parser.add_argument("--font", default="Times New Roman", help="шрифт (по умолчанию Times New Roman)")
parser.add_argument("--size", type=int, default=14, help="размер основного текста, пт (по умолчанию 14)")
parser.add_argument("--spacing", type=float, default=1.5, help="межстрочный интервал (по умолчанию 1.5)")
parser.add_argument("--no-heading-numbers", action="store_true", help="не нумеровать заголовки")
parser.add_argument("--no-page-numbers", action="store_true", help="не нумеровать страницы")
parser.add_argument("--number-title-page", action="store_true", help="ставить номер и на первой странице")
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
return parser
def main(argv=None):
args = build_parser().parse_args(argv)
if not args.input.is_file():
print(f"md2gost: файл не найден: {args.input}", file=sys.stderr)
return 1
settings = DocumentSettings()
settings.font_name = args.font
settings.font_size = args.size
settings.line_spacing = args.spacing
settings.auto_numbering_headings = not args.no_heading_numbers
settings.page_numbering = not args.no_page_numbers
settings.exclude_title_page_numbering = not args.number_title_page
output = MarkdownToDocxConverter(settings).convert(str(args.input), str(args.output) if args.output else None)
print(output)
return 0
if __name__ == "__main__":
sys.exit(main())