Coverage for frappe_manager / commands / reset.py: 59%

17 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.commands import check_bench_migration_required 

7from frappe_manager.output_manager import get_global_output_handler, spinner 

8from frappe_manager.site_manager.site import Bench 

9from frappe_manager.utils.callbacks import sitename_callback, sites_autocompletion_callback 

10 

11 

12@example( 

13 "Drop database and reinstall all apps", 

14 "{benchname}", 

15 detail="Drops the site's database and reinstalls all apps; destructive and intended for development or recovery.", 

16 benchname="mybench", 

17) 

18@example( 

19 "Reset with custom admin password", 

20 "{benchname} --admin-pass newpassword", 

21 detail="Resets the bench and sets the new administrator password after reinstalling apps.", 

22 benchname="mybench", 

23) 

24def reset( 

25 ctx: typer.Context, 

26 benchname: Annotated[ 

27 str | None, 

28 typer.Argument( 

29 help="Name of the bench.", 

30 autocompletion=sites_autocompletion_callback, 

31 callback=sitename_callback, 

32 ), 

33 ] = None, 

34 admin_pass: Annotated[ 

35 str | None, 

36 typer.Option(help="Password for the 'Administrator' User."), 

37 ] = None, 

38): 

39 """ 

40 Drop database and reinstall all apps. 

41 

42 Intended for resetting a site to a clean state; this operation removes site data. 

43 """ 

44 

45 check_bench_migration_required(benchname) 

46 

47 services_manager = ctx.obj["services"] 

48 

49 output = get_global_output_handler() 

50 logger = ctx.obj.get("logger") 

51 bench = Bench.get_object(benchname, services_manager, logger=logger, output_handler=output) 

52 

53 with spinner(output, f"Resetting {benchname}"): 

54 bench.reset(admin_pass)