in bot/__main__.py [0:0]
def make_plan(branches):
tracked_packages = config.get("tracked-packages", {})
local_assets = {}
for branch, package, version in assets.walk():
meta = assets.get_meta(branch, package, version)
if meta is not None:
local_assets.setdefault(package, {}).setdefault(branch, {}).setdefault(version, meta)
remote_assets = {}
for package in tracked_packages:
for branch in tracked_packages[package]["branches"]:
package_dir = packages.packages_dir / branch / "packages" / package
if package_dir.exists():
for version in os.listdir(package_dir):
meta = packages.get_manifest(branch, package, version)
if meta is not None:
remote_assets.setdefault(package, {}).setdefault(branch, {}).setdefault(version, meta)
for package in remote_assets:
for branch in remote_assets[package]:
local_versions = set(local_assets.get(package, {}).get(branch, {}))
remote_versions = set(remote_assets[package][branch])
min_version = tracked_packages[package].get("minimum-version", 0)
if min_version:
remote_versions = {v for v in remote_versions if v >= min_version or v in local_versions}
all_versions = local_versions | remote_versions
only_local = local_versions - remote_versions
only_remote = remote_versions - local_versions
yield (package, branch, all_versions, only_local, only_remote)