"""Command line entry point.""" from __future__ import annotations import argparse import sys from . import __version__ from .pdf import SourceType, open_source, page_raster def _info(args: argparse.Namespace) -> int: source = open_source(args.pdf, SourceType(args.type) if args.type else None) note = f" (detected {source.detected.value}, overridden)" if source.overridden else "" print(f"{source.path.name}: {source.type.value}{note}, {len(source)} pages") for i in range(len(source)): h, w = page_raster(source, i).shape print(f" p{i + 1:<3} {w}x{h}") source.close() return 0 def main(argv: list[str] | None = None) -> int: parser = argparse.ArgumentParser( prog="noteman-slicer", description="Cut score PDFs into noteman's slice images and markers.", ) parser.add_argument("--version", action="version", version=__version__) sub = parser.add_subparsers(dest="command", required=True) info = sub.add_parser("info", help="classify a PDF and report its page rasters") info.add_argument("pdf") info.add_argument( "--type", choices=[t.value for t in SourceType], help="override source-type detection", ) info.set_defaults(func=_info) args = parser.parse_args(argv) return args.func(args) if __name__ == "__main__": sys.exit(main())