Files
Factory/.obs/sync_packages.py
Nicolas Belouin cf3153e074 Sync metadata, revamp PR jobs
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
(cherry picked from commit d6d501ad99)
(cherry picked from commit 4d824b71cc)
(cherry picked from commit 0d3c83fca1)
(cherry picked from commit 5a73d61002)
(cherry picked from commit 34687fb5e9)
(cherry picked from commit 4a99805fde)
(cherry picked from commit 331f08255c)
(cherry picked from commit 3dea69443d)
(cherry picked from commit d97e434fce)
(cherry picked from commit 9e41ee25d9)
(cherry picked from commit 8f20b3433e)
2025-02-24 16:00:18 +01:00

45 lines
1.2 KiB
Python

import argparse
import subprocess
import pathlib
from typing import Set
import add_package
import delete_package
from common import PROJECT
def get_obs_packages() -> Set[str]:
packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True)
return { p for p in packages.stdout.splitlines() if ":" not in p }
def get_local_packages() -> Set[str]:
p = pathlib.Path('.')
return {x.name for x in p.iterdir() if x.is_dir() if not x.name.startswith('.')}
def main():
parser = argparse.ArgumentParser(prog="sync_packages")
parser.add_argument('--dry-run', action="store_true")
args = parser.parse_args()
local_packages = get_local_packages()
obs_packages = get_obs_packages()
packages_to_add = local_packages - obs_packages
packages_to_delete = obs_packages - local_packages
for p in packages_to_add:
print(f"Adding {p}")
if not args.dry_run:
add_package.add_package(p)
for p in packages_to_delete:
print(f"Removing {p}")
if not args.dry_run:
delete_package.delete_package(p)
print("Package synced in OBS, you can now push the modified workflow file")
if __name__ == '__main__':
main()