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

1"""Admin package CLI contributor.""" 

2 

3from __future__ import annotations 

4 

5from lexigram.contracts.cli.contributions import ( 

6 CommandContribution, 

7 SchemaSetupContribution, 

8) 

9from lexigram.contracts.cli.types import GeneratorDefinition 

10 

11 

12class AdminCliContributor: 

13 """CLI contributor for the lexigram-admin package.""" 

14 

15 @property 

16 def contributor_id(self) -> str: 

17 """Return the contributor identifier.""" 

18 return "admin" 

19 

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 ] 

40 

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 ] 

52 

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 ] 

63 

64 

65__all__ = ["AdminCliContributor"]