feat(cli): add stubs command
This commit is contained in:
@@ -4,5 +4,6 @@ from .format import format as format
|
||||
from .highlight import highlight as highlight
|
||||
from .parse import parse as parse
|
||||
from .registry import dump_registry as dump_registry
|
||||
from .stubs import stubs as stubs
|
||||
from .types import types as types
|
||||
from .validate import validate as validate
|
||||
|
||||
27
midas/cli/commands/stubs.py
Normal file
27
midas/cli/commands/stubs.py
Normal file
@@ -0,0 +1,27 @@
|
||||
import ast
|
||||
from pathlib import Path
|
||||
from typing import TextIO
|
||||
|
||||
import click
|
||||
|
||||
from midas.checker.checker import TypeChecker
|
||||
from midas.generator.stubs import StubsGenerator
|
||||
|
||||
|
||||
@click.command(help="Generate stubs from Midas definitions")
|
||||
@click.argument("file", type=click.File("r"))
|
||||
@click.option("-o", "--output", type=click.File("w"), default="-")
|
||||
def stubs(
|
||||
file: TextIO,
|
||||
output: TextIO,
|
||||
):
|
||||
source_path: Path = Path(file.name).resolve()
|
||||
|
||||
checker = TypeChecker()
|
||||
checker.import_midas(source_path)
|
||||
|
||||
generator = StubsGenerator(checker.types)
|
||||
module: ast.Module = generator.generate_stubs()
|
||||
module = ast.fix_missing_locations(module)
|
||||
|
||||
output.write(ast.unparse(module))
|
||||
@@ -18,6 +18,7 @@ midas.add_command(commands.highlight)
|
||||
midas.add_command(commands.parse)
|
||||
midas.add_command(commands.dump_registry)
|
||||
midas.add_command(commands.types)
|
||||
midas.add_command(commands.stubs)
|
||||
midas.add_command(commands.validate)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user