Coverage for gws-app/gws/plugin/qfieldcloud/cli.py: 0%

28 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 12:46 +0200

1"""CLI""" 

2 

3from typing import cast 

4import gws 

5import gws.config 

6import gws.base.action 

7 

8 

9from . import action 

10 

11class PackageRequest(gws.Request): 

12 projectUid: str 

13 qfcProjectUid: str 

14 dir: str 

15 actionName: str = '' 

16 

17class Object(gws.Node): 

18 

19 @gws.ext.command.cli('qfieldcloudPackage') 

20 def invoke(self, p: PackageRequest): 

21 """Package a QField Cloud project.""" 

22 

23 root = gws.config.load() 

24 project = root.app.project(p.projectUid) 

25 if not project: 

26 gws.log.error(f'project {p.projectUid!r} not found') 

27 return 

28 

29 act_name = p.actionName or 'qfieldcloud' 

30 act = cast(action.Object, gws.base.action.get_action_for_cli(root, act_name, p.projectUid)) 

31 if not act: 

32 return 

33 

34 own_project = cast(gws.Project, act.find_closest(gws.ext.object.project)) 

35 if own_project and own_project.uid != project.uid: 

36 gws.log.error(f'action {act_name!r} does not belong to project {p.projectUid!r}') 

37 return 

38 

39 

40 sys_user = act.root.app.authMgr.systemUser 

41 act.create_package_from_cli(p.qfcProjectUid, p.dir, project, sys_user) 

42