"""Remove YAML frontmatter from all markdown files in the repo.

Frontmatter is the block delimited by `---` at the very start of a file:
    ---
    title: ...
    ---
The script strips that block (and any immediately following blank lines)
from every .md file found recursively under the target directory.
"""

import os
import re
import sys

FRONTMATTER_RE = re.compile(r"\A---\r?\n.*?\r?\n---\r?\n?", re.DOTALL)


def strip_frontmatter(content: str) -> str:
    """Return content with leading YAML frontmatter removed."""
    m = FRONTMATTER_RE.match(content)
    if not m:
        return content
    rest = content[m.end():]
    # Trim leading blank lines left behind after the frontmatter.
    return rest.lstrip("\r\n")


def process_file(path: str, dry_run: bool = False) -> bool:
    """Strip frontmatter from one file. Returns True if changed."""
    try:
        with open(path, "r", encoding="utf-8-sig", newline="") as f:
            original = f.read()
    except (UnicodeDecodeError, OSError) as e:
        print(f"  ! skip (read error): {path} ({e})")
        return False

    updated = strip_frontmatter(original)
    if updated == original:
        return False

    if dry_run:
        print(f"  ~ would strip frontmatter: {path}")
    else:
        with open(path, "w", encoding="utf-8", newline="") as f:
            f.write(updated)
        print(f"  ✓ stripped frontmatter: {path}")
    return True


def main() -> None:
    args = [a for a in sys.argv[1:] if a != "--dry-run"]
    dry_run = "--dry-run" in sys.argv
    root = args[0] if args else os.path.dirname(os.path.abspath(__file__))

    # Only process these subdirectories under root.
    target_dirs = ["agentss", "promps"]

    print(f"Scanning: {root} (dirs: {', '.join(target_dirs)})"
          + (" (dry run)" if dry_run else ""))
    changed = 0
    total = 0
    for sub in target_dirs:
        sub_root = os.path.join(root, sub)
        if not os.path.isdir(sub_root):
            print(f"  ! directory not found, skipping: {sub_root}")
            continue
        for dirpath, _dirs, files in os.walk(sub_root):
            # Skip hidden dirs.
            if os.path.basename(dirpath).startswith("."):
                continue
            for name in files:
                if not name.lower().endswith(".md"):
                    continue
                total += 1
                full = os.path.join(dirpath, name)
                if process_file(full, dry_run=dry_run):
                    changed += 1

    print(f"\nDone. {changed} of {total} markdown file(s) "
          f"{'would be ' if dry_run else ''}modified.")


if __name__ == "__main__":
    main()
