59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
#!/usr/bin/env python
|
||
"""CLI: DOCX → Markdown (диалект md2gost)."""
|
||
|
||
from __future__ import annotations
|
||
|
||
import argparse
|
||
import sys
|
||
|
||
from .pipeline import ImportRequest, convert_docx
|
||
|
||
|
||
def main() -> None:
|
||
p = argparse.ArgumentParser(
|
||
prog="word2md",
|
||
description=(
|
||
"Импорт DOCX в Markdown диалекта md2gost "
|
||
"(заголовки # *, подписи %id, @Рисунок:id, таблицы, листинги)."
|
||
),
|
||
)
|
||
p.add_argument("filename", help="Исходный .docx")
|
||
p.add_argument(
|
||
"-o", "--output",
|
||
default=None,
|
||
help="Путь к .md (по умолчанию: <stem>.md рядом с docx)",
|
||
)
|
||
p.add_argument(
|
||
"--media-dir",
|
||
default=None,
|
||
help="Каталог для картинок (по умолчанию: <stem>_media рядом с .md)",
|
||
)
|
||
p.add_argument(
|
||
"--keep-toc-pages",
|
||
action=argparse.BooleanOptionalAction,
|
||
default=False,
|
||
help="Не выкидывать строки содержания Word (по умолчанию выкл.: только [TOC])",
|
||
)
|
||
p.add_argument(
|
||
"--pagebreaks",
|
||
action=argparse.BooleanOptionalAction,
|
||
default=False,
|
||
help="Писать --- на разрывах страниц Word (для --hr-pagebreak при обратной сборке)",
|
||
)
|
||
args = p.parse_args()
|
||
|
||
result = convert_docx(
|
||
ImportRequest(
|
||
filename=args.filename,
|
||
output=args.output,
|
||
media_dir=args.media_dir,
|
||
keep_toc_pages=args.keep_toc_pages,
|
||
emit_page_breaks=args.pagebreaks,
|
||
)
|
||
)
|
||
sys.exit(result.exit_code)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|