def configure_parser(subparsers: argparse._SubParsersAction) -> None:
"""Register the compare subcommand parser."""
parser = subparsers.add_parser(
"compare",
help="Compare multiple CLTK backends on the same text.",
formatter_class=HelpFormatter,
)
parser.add_argument(
"--lang",
"--language",
dest="language",
required=True,
help="Glottolog language id.",
)
parser.add_argument("--text", help="Raw text to analyze.")
parser.add_argument("--text-file", help="Path to a text file to analyze.")
parser.add_argument(
"--backends",
required=True,
help="Comma-separated backend list (e.g., stanza,openai,ollama).",
)
parser.add_argument(
"--configs",
help="JSON string or path to JSON file with per-backend overrides.",
)
parser.add_argument("--out-dir", help="Directory for report outputs.")
parser.add_argument(
"--basename",
default="compare_backends",
help="Base filename for outputs (default: compare_backends).",
)
parser.add_argument(
"--format",
choices=["md", "json", "both"],
default="md",
help="Output format (md, json, both).",
)
parser.add_argument(
"--top-n",
type=int,
default=10,
help="Number of top disagreements to include.",
)
parser.add_argument(
"--max-sentences",
type=int,
help="Cap the number of sentences compared.",
)
parser.add_argument(
"--max-tokens",
type=int,
help="Cap the number of tokens per sentence.",
)
parser.add_argument(
"--quiet",
action="store_true",
help="Suppress non-error logs.",
)
parser.add_argument(
"--verbose",
action="store_true",
help="Enable info-level logs.",
)
parser.set_defaults(func=run)