def run( filepath: str, *, pkg: str = "model", rootdir: str = "", here: t.Optional[str] = None, action: t.Literal["generate", "scan"] = "generate", ) -> None: m = import_module(filepath) here = here or m.__file__ settings: SettingsDict = {"rootdir": rootdir, "here": here} app = create_app(settings) app.include("egoist.directives.define_struct_set") define_struct_set = app.define_struct_set( "egoist.generators.structkit:walk") scanned = scan_module(m, is_ignored=lambda x: not inspect.isclass(x)) classes = list(scanned.values()) def models(): from egoist.generators.structkit import runtime, structkit with runtime.generate(structkit, classes=classes) as m: m.package(pkg) define_struct_set(models) app.run([action])
def run( filepath: str, *, rootdir: str = "cmd/", here: t.Optional[str] = None, action: t.Literal["generate", "scan"] = "generate", ) -> None: m = import_module(filepath) here = here or m.__file__ settings: SettingsDict = {"rootdir": rootdir, "here": here} app = create_app(settings) app.include("egoist.directives.define_cli") define_cli = app.define_cli("egoist.generators.clikit:walk") commands = scan_module(m) for name, fn in commands.items(): define_cli(fn) app.run([action])
from __future__ import annotations import typing as t from egoist.app import create_app, SettingsDict, parse_args from egoist.go.types import gopackage settings: SettingsDict = {"rootdir": "", "here": __file__} app = create_app(settings) app.include("egoist.directives.define_struct_set") class Person: name: str age: int memo: Memo memo2: t.Optional[Memo] memo_listmap: t.Dict[str, t.List[Memo]] @gopackage("m/other") class Memo: text: str @app.define_struct_set("egoist.generators.structkit:walk") def models__models() -> None: from egoist.generators.structkit import runtime, structkit with runtime.generate(structkit, classes=[Person]) as m: m.package("models")