1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-27 02:16:12 +01:00
github.com_openSUSE_osc/osc/_private/api_source.py

127 lines
3.3 KiB
Python
Raw Normal View History

from . import api
from .common import format_msg_project_package_options
from .common import print_msg
from .. import oscerr
def add_channels(apiurl, project, package=None, enable_all=False, skip_disabled=False, print_to="debug"):
if all((enable_all, skip_disabled)):
raise oscerr.OscValueError("Options 'enable_all' and 'skip_disabled' are mutually exclusive")
msg = format_msg_project_package_options(
"Adding channels to",
project,
package,
enable_all=enable_all,
skip_disabled=skip_disabled,
)
print_msg(msg, print_to=print_to)
url_path = ["source", project]
if package:
url_path += [package]
url_query = {"cmd": "addchannels"}
if enable_all:
url_query["mode"] = "enable_all"
if skip_disabled:
url_query["mode"] = "skip_disabled"
return api.post(apiurl, url_path, url_query)
def add_containers(apiurl, project, package, extend_package_names=False, print_to="debug"):
msg = format_msg_project_package_options(
"Adding containers to",
project,
package,
extend_package_names=extend_package_names,
)
print_msg(msg, print_to=print_to)
url_path = ["source", project, package]
url_query = {"cmd": "addcontainers"}
if extend_package_names:
url_query["extend_package_names"] = "1"
return api.post(apiurl, url_path, url_query)
def enable_channels(apiurl, project, package=None, print_to="debug"):
msg = format_msg_project_package_options(
"Enabling channels in",
project,
package,
)
print_msg(msg, print_to=print_to)
url_path = ["source", project]
if package:
url_path += [package]
if package:
url_query = {"cmd": "enablechannel"}
else:
url_query = {"cmd": "modifychannels", "mode": "enable_all"}
return api.post(apiurl, url_path, url_query)
def get_linked_packages(apiurl, project, package):
url_path = ["source", project, package]
url_query = {"cmd": "showlinked"}
root = api.post(apiurl, url_path, url_query)
result = []
nodes = api.find_nodes(root, "collection", "package")
for node in nodes:
item = {
"project": node.get("project"),
"name": node.get("name"),
}
result.append(item)
return result
def release(
apiurl,
project,
package,
repository,
target_project,
target_repository,
set_release_to=None,
delayed=False,
print_to="debug",
):
msg = format_msg_project_package_options(
"Releasing",
project,
package,
target_project,
target_package=None,
repository=repository,
dest_repository=target_repository,
delayed=delayed,
)
print_msg(msg, print_to=print_to)
url_path = ["source", project]
if package:
url_path += [package]
url_query = {"cmd": "release"}
if repository:
url_query["repository"] = repository
if target_project:
url_query["target_project"] = target_project
if target_repository:
url_query["target_repository"] = target_repository
if set_release_to:
url_query["setrelease"] = set_release_to
if not delayed:
url_query["nodelay"] = "1"
return api.post(apiurl, url_path, url_query)