Coverage for frappe_manager / commands / services / start.py: 39%

23 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-07-02 18:13 +0530

1from typing import Annotated 

2 

3import typer 

4from typer_examples import example 

5 

6from frappe_manager.output_manager import get_global_output_handler 

7from frappe_manager.services_manager import ServicesEnum 

8from frappe_manager.services_manager.services import ServicesManager 

9 

10 

11@example( 

12 "Start global-db only", 

13 "global-db", 

14 detail="Starts only the global-db service used to store bench databases.", 

15) 

16@example( 

17 "Start all global services", 

18 "all", 

19 detail="Starts all global services managed by FM (nginx-proxy, global-db, etc.).", 

20) 

21def start_services( 

22 ctx: typer.Context, 

23 service_name: Annotated[ServicesEnum, typer.Argument(help="Name of the service.")], 

24): 

25 """Starts global services.""" 

26 services_manager: ServicesManager = ctx.obj["services"] 

27 output = get_global_output_handler() 

28 

29 if service_name.value == ServicesEnum.all: 

30 for service in ServicesEnum: 

31 if service == ServicesEnum.all: 

32 continue 

33 

34 if services_manager.is_service_running(service.value): 

35 output.print(f"Skipping already running service {service.value}") 

36 continue 

37 

38 services_manager.start_service(services=[service.value]) 

39 output.print(f"Started service {service.value}") 

40 elif not services_manager.is_service_running(service_name.value): 

41 services_manager.start_service(services=[service_name.value]) 

42 else: 

43 output.print(f"Skipping already running service {service_name.value}")