Coverage for src/lexigram/admin/cli/contributor.py: 0%
14 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
1"""Admin package CLI contributor."""
3from __future__ import annotations
5from lexigram.contracts.cli.contributions import (
6 CommandContribution,
7 SchemaSetupContribution,
8)
9from lexigram.contracts.cli.types import GeneratorDefinition
12class AdminCliContributor:
13 """CLI contributor for the lexigram-admin package."""
15 @property
16 def contributor_id(self) -> str:
17 """Return the contributor identifier."""
18 return "admin"
20 def get_generators(self) -> list[GeneratorDefinition]:
21 """Return generator definitions for admin."""
22 return [
23 GeneratorDefinition(
24 name="admin_action",
25 title="Generate Admin Action",
26 description="Generate a custom admin action",
27 contributor="admin",
28 generator_path="lexigram.admin.cli.generators.admin_action:AdminActionGenerator",
29 default_output_dir="src/admin/actions",
30 ),
31 GeneratorDefinition(
32 name="admin_resource",
33 title="Generate Admin Resource",
34 description="Generate an admin resource for the admin panel",
35 contributor="admin",
36 generator_path="lexigram.admin.cli.generators.admin_resource:AdminResourceGenerator",
37 default_output_dir="src/admin/resources",
38 ),
39 ]
41 def get_commands(self) -> list[CommandContribution]:
42 """Return CLI command contributions for admin."""
43 return [
44 CommandContribution(
45 name="search",
46 help="Search index management commands (reindex, etc.)",
47 app_factory_path="lexigram.admin.cli.commands.search:create_app",
48 contributor="admin",
49 category="admin",
50 ),
51 ]
53 def get_schema_setup(self) -> list[SchemaSetupContribution]:
54 """Return schema setup contributions for admin."""
55 return [
56 SchemaSetupContribution(
57 name="admin.tenant_configs",
58 description="Tenant-scoped settings storage",
59 setup_fn_path="lexigram.admin.cli.schema_setup:ensure_tenant_configs",
60 contributor=self.contributor_id,
61 ),
62 ]
65__all__ = ["AdminCliContributor"]