forked from suse-edge/Factory
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import yaml
|
||
|
import subprocess
|
||
|
import argparse
|
||
|
import os
|
||
|
import os.path
|
||
|
|
||
|
from common import PROJECT, REPOSITORY, BRANCH
|
||
|
|
||
|
def add_package_to_workflow(name: str):
|
||
|
modified = False
|
||
|
with open(".obs/workflows.yml", "r") as wf_file:
|
||
|
workflows = yaml.safe_load(wf_file)
|
||
|
if not any(
|
||
|
x
|
||
|
for x in workflows["staging_build"]["steps"]
|
||
|
if x["branch_package"]["source_package"] == name
|
||
|
):
|
||
|
workflows["staging_build"]["steps"].append(
|
||
|
{
|
||
|
"branch_package": {
|
||
|
"source_project": PROJECT,
|
||
|
"target_project": f"{PROJECT}:Staging",
|
||
|
"source_package": name,
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
modified = True
|
||
|
if modified:
|
||
|
with open(".obs/workflows.yml", "w") as wf_file:
|
||
|
yaml.dump(workflows, wf_file)
|
||
|
|
||
|
|
||
|
def add_package_to_project(name: str):
|
||
|
package_meta = f"""<package name="{name}" project="{PROJECT}">
|
||
|
<title/>
|
||
|
<description/>
|
||
|
<scmsync>{REPOSITORY}?subdir={name}#{BRANCH}</scmsync>
|
||
|
</package>"""
|
||
|
p = subprocess.run(["osc", "meta", "pkg", "-F", "-", PROJECT, name], input=package_meta, encoding='utf-8' , stdout=subprocess.PIPE)
|
||
|
print(p.stdout)
|
||
|
print(p.stderr)
|
||
|
p.check_returncode()
|
||
|
|
||
|
|
||
|
def add_package(package_name: str):
|
||
|
if "/" in package_name:
|
||
|
print("invalid package name")
|
||
|
os.exit(1)
|
||
|
|
||
|
if not os.path.isdir(package_name):
|
||
|
print("package doesn't exist in this directory")
|
||
|
os.exit(1)
|
||
|
|
||
|
add_package_to_project(package_name)
|
||
|
add_package_to_workflow(package_name)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = argparse.ArgumentParser(prog="add_package")
|
||
|
parser.add_argument("package")
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
add_package(args.package)
|
||
|
|
||
|
|
||
|
print("Package created in OBS, you can now push the modified workflow file")
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|