#!/usr/bin/env python3
"""CommonMark command-line entry point."""

import sys

from parser import parse_blocks
from renderer import render_document


def main() -> int:
    """Read Markdown from stdin and write rendered HTML to stdout."""

    try:
        input_stream = getattr(sys.stdin, "buffer", sys.stdin)
        raw_markdown = input_stream.read()
        markdown = raw_markdown.decode("utf-8") if isinstance(raw_markdown, bytes) else raw_markdown
        rendered = render_document(parse_blocks(markdown))
        output = rendered.encode("utf-8")
        if hasattr(sys.stdout, "buffer"):
            sys.stdout.buffer.write(output)
        else:
            sys.stdout.write(rendered)
    except (OSError, UnicodeError, ValueError) as error:
        sys.stderr.write(f"cmark: {error}\n")
        return 1
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
