1
0
forked from suse-edge/Factory
Factory/.obs/sync_packages.py

45 lines
1.2 KiB
Python
Raw Normal View History

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 set(packages.stdout.splitlines())
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()