#!/usr/bin/env python3
from __future__ import annotations

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "tools"))

from mdleaves import leaves_to_json, read_markdown, to_all, walk_markdown  # noqa: E402
from yamlout import to_yaml  # noqa: E402


def main(argv: list[str]) -> int:
    import argparse
    p = argparse.ArgumentParser(description="md/import - split markdown corpus into leafs")
    p.add_argument("root", nargs="?", default=".", help="directory to walk for .md files")
    p.add_argument("--files", action="store", help="comma-separated file list")
    p.add_argument("--json", action="store_true")
    a = p.parse_args(argv)

    paths: list[Path] = []
    if a.files:
        paths = [Path(f) for f in a.files.split(",")]
    else:
        root = Path(a.root)
        if not root.exists():
            print(f"md/import: no such path {root}", file=sys.stderr)
            return 2
        paths = [root] if root.is_file() else walk_markdown(root)

    if not paths:
        print("md/import: no markdown files", file=sys.stderr)
        return 1

    all_leafs: list[dict] = []
    for path in paths:
        try:
            text = read_markdown(path)
        except OSError as e:
            print(f"md/import: {path}: {e}", file=sys.stderr)
            continue
        all_leafs.extend(to_all(text, path))

    out = leaves_to_json(all_leafs)
    print(out if a.json else to_yaml(__import__("json").loads(out)))
    return 0


if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))