feat(cli): add help messages to all commands

This commit is contained in:
2026-06-15 18:55:23 +02:00
parent 119c262da4
commit 274e366561
8 changed files with 16 additions and 9 deletions

View File

@@ -14,7 +14,7 @@ from midas.cli.highlighter import DiagnosticsHighlighter
from midas.cli.utils import DiagnosticPrinter from midas.cli.utils import DiagnosticPrinter
@click.command() @click.command(help="Run type checker and report diagnostics")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-t", "--types", type=click.File("r"), multiple=True) @click.option("-t", "--types", type=click.File("r"), multiple=True)
@click.option("-l", "--highlight", type=click.File("w")) @click.option("-l", "--highlight", type=click.File("w"))

View File

@@ -3,19 +3,20 @@
# midas compile <file.py> [--types <file.midas>] [-o <output>] [--assertions|--strict|--no-checks] # midas compile <file.py> [--types <file.midas>] [-o <output>] [--assertions|--strict|--no-checks]
# ``` # ```
import sys
from pathlib import Path from pathlib import Path
from typing import TextIO from typing import TextIO
import click import click
from midas.checker.checker import TypeChecker from midas.checker.checker import TypeChecker
from midas.checker.diagnostic import Diagnostic from midas.checker.diagnostic import Diagnostic, DiagnosticType
from midas.cli.utils import DiagnosticPrinter from midas.cli.utils import DiagnosticPrinter
from midas.generator.generator import Generator from midas.generator.generator import Generator
from midas.utils import TypedAST from midas.utils import TypedAST
@click.command() @click.command(help="Compile source")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-t", "--types", type=click.File("r"), multiple=True) @click.option("-t", "--types", type=click.File("r"), multiple=True)
def compile( def compile(
@@ -34,5 +35,8 @@ def compile(
printer = DiagnosticPrinter() printer = DiagnosticPrinter()
printer.print_all(diagnostics) printer.print_all(diagnostics)
if any(map(lambda d: d.type == DiagnosticType.ERROR, diagnostics)):
sys.exit(1)
generator = Generator(workdir=source_path.parent) generator = Generator(workdir=source_path.parent)
generator.generate(typed_ast, source_path) generator.generate(typed_ast, source_path)

View File

@@ -9,7 +9,7 @@ from midas.lexer.token import Token
from midas.parser.midas import MidasParser from midas.parser.midas import MidasParser
@click.command() @click.command(help="Parse and pretty print a Midas file")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-o", "--output", type=click.File("w"), default="-") @click.option("-o", "--output", type=click.File("w"), default="-")
def format(file: TextIO, output: TextIO): def format(file: TextIO, output: TextIO):

View File

@@ -46,7 +46,10 @@ def highlight_midas(source: str, path: str) -> Highlighter:
return highlighter return highlighter
@click.command() @click.command(
help="Parse a Python or Midas file and produce a highlighted version showing AST node types inline",
short_help="Parse and highlight a Python or Midas file",
)
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-o", "--output", type=click.File("w"), default="-") @click.option("-o", "--output", type=click.File("w"), default="-")
def highlight(output: TextIO, file: TextIO): def highlight(output: TextIO, file: TextIO):

View File

@@ -45,7 +45,7 @@ def dump_midas_ast(source: str, filename: str) -> str:
return dump return dump
@click.command() @click.command(help="Parse a Python or Midas file and pretty-print its AST")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("--raw", is_flag=True) @click.option("--raw", is_flag=True)
def parse(file: TextIO, raw: bool): def parse(file: TextIO, raw: bool):

View File

@@ -12,7 +12,7 @@ from midas.checker.checker import TypeChecker
from midas.checker.types import Type from midas.checker.types import Type
@click.command() @click.command(help="Dump types registry")
@click.option("-t", "--types", type=click.File("r"), multiple=True) @click.option("-t", "--types", type=click.File("r"), multiple=True)
def dump_registry( def dump_registry(
types: tuple[TextIO], types: tuple[TextIO],

View File

@@ -14,7 +14,7 @@ from midas.cli.highlighter import DiagnosticsHighlighter
from midas.cli.utils import DiagnosticPrinter from midas.cli.utils import DiagnosticPrinter
@click.command() @click.command(help="Print typing judgements")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-t", "--types", type=click.File("r"), multiple=True) @click.option("-t", "--types", type=click.File("r"), multiple=True)
@click.option("-l", "--highlight", type=click.File("w")) @click.option("-l", "--highlight", type=click.File("w"))

View File

@@ -14,7 +14,7 @@ from midas.cli.highlighter import DiagnosticsHighlighter
from midas.cli.utils import DiagnosticPrinter from midas.cli.utils import DiagnosticPrinter
@click.command() @click.command(help="Validate Midas definitions")
@click.argument("file", type=click.File("r")) @click.argument("file", type=click.File("r"))
@click.option("-l", "--highlight", type=click.File("w")) @click.option("-l", "--highlight", type=click.File("w"))
def validate( def validate(