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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
1"""CLI"""
3from typing import cast
4import gws
5import gws.config
6import gws.base.action
9from . import action
11class PackageRequest(gws.Request):
12 projectUid: str
13 qfcProjectUid: str
14 dir: str
15 actionName: str = ''
17class Object(gws.Node):
19 @gws.ext.command.cli('qfieldcloudPackage')
20 def invoke(self, p: PackageRequest):
21 """Package a QField Cloud project."""
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
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
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
40 sys_user = act.root.app.authMgr.systemUser
41 act.create_package_from_cli(p.qfcProjectUid, p.dir, project, sys_user)