Coverage for src/lexigram/web/cli/generators/middleware.py: 67%
12 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
1"""Middleware generator for the web package."""
3from __future__ import annotations
5from typing import Any
7from lexigram.codegen import GenerationResult, GeneratorBase
10class MiddlewareGenerator(GeneratorBase):
11 """Generate a middleware class."""
13 template_name = "middleware.py.jinja2"
15 def __init__(self, output_dir: str = "src/middleware") -> None:
16 super().__init__(output_dir=output_dir)
18 def generate(
19 self,
20 name: str,
21 *,
22 doc: str | None = None,
23 options: dict[str, Any] | None = None,
24 dry_run: bool = False,
25 force: bool = False,
26 **kwargs: object,
27 ) -> GenerationResult:
28 file_path = self.output_dir / f"{self._to_snake_case(name)}_middleware.py"
29 content = self.render_template(
30 self.template_name,
31 {
32 "name": name,
33 "class_name": f"{self._to_pascal_case(name)}Middleware",
34 "doc": doc,
35 "options": options,
36 },
37 )
38 return self.write_file(file_path, content, dry_run=dry_run, force=force)
41__all__ = ["MiddlewareGenerator"]