mirror of
https://github.com/openSUSE/osc.git
synced 2024-12-25 17:36:13 +01:00
lock: Move code to core.py/lock(), improve CLI handling
This commit is contained in:
parent
5d31fc1486
commit
c639dfd89c
@ -3834,34 +3834,23 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
||||
|
||||
@cmdln.option('-m', '--message', metavar='TEXT',
|
||||
help='specify log message TEXT')
|
||||
@cmdln.option('project')
|
||||
@cmdln.option('package', nargs='?')
|
||||
def do_lock(self, subcmd, opts):
|
||||
def do_lock(self, subcmd, opts, *args):
|
||||
"""
|
||||
Locks a project or package
|
||||
|
||||
usage:
|
||||
osc lock PROJECT [PACKAGE]
|
||||
"""
|
||||
project = opts.project
|
||||
package = opts.package
|
||||
apiurl = self.get_api_url()
|
||||
kind = 'prj'
|
||||
path_args = (project,)
|
||||
if package is not None:
|
||||
kind = 'pkg'
|
||||
path_args = (project, package)
|
||||
meta = meta_exists(kind, path_args, create_new=False, apiurl=apiurl)
|
||||
root = ET.fromstring(b''.join(meta))
|
||||
if root.find('lock') is not None:
|
||||
print('Already locked', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
# alternatively, we could also use the set_flag api call
|
||||
# instead of manually manipulating the xml
|
||||
lock = ET.SubElement(root, 'lock')
|
||||
ET.SubElement(lock, 'enable')
|
||||
meta = ET.tostring(root)
|
||||
edit_meta(kind, path_args=path_args, data=meta, msg=opts.message)
|
||||
|
||||
args = list(args)
|
||||
project, package = pop_project_package_from_args(
|
||||
args, package_is_optional=True
|
||||
)
|
||||
ensure_no_remaining_args(args)
|
||||
|
||||
# TODO: make consistent with unlock and require a message?
|
||||
lock(apiurl, project, package, opts.message)
|
||||
|
||||
@cmdln.option('-m', '--message', metavar='TEXT',
|
||||
help='specify log message TEXT')
|
||||
|
17
osc/core.py
17
osc/core.py
@ -6000,6 +6000,23 @@ def copy_pac(
|
||||
return 'Done.'
|
||||
|
||||
|
||||
def lock(apiurl: str, project: str, package: str, msg: str = None):
|
||||
url_path = ["source", project]
|
||||
if package:
|
||||
url_path += [package]
|
||||
|
||||
url_query = {
|
||||
"cmd": "set_flag",
|
||||
"flag": "lock",
|
||||
"status": "enable",
|
||||
}
|
||||
|
||||
if msg:
|
||||
url_query["comment"] = msg
|
||||
|
||||
_private.api.post(apiurl, url_path, url_query)
|
||||
|
||||
|
||||
def unlock_package(apiurl: str, prj: str, pac: str, msg):
|
||||
query = {'cmd': 'unlock', 'comment': msg}
|
||||
u = makeurl(apiurl, ['source', prj, pac], query)
|
||||
|
Loading…
Reference in New Issue
Block a user