bot/config.py (30 lines of code) (raw):

# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. import yaml import semver import assets def flatten(tracked_packages): if type(tracked_packages) is not list: tracked_packages = [tracked_packages] flattened = {} for tracked_package in tracked_packages: if type(tracked_package) is str: tracked_package = {tracked_package: None} for name, package in tracked_package.items(): flattened[name] = package or {} return flattened def validate(config): tracked_packages = flatten(config.get("tracked-packages", {})) config["tracked-packages"] = tracked_packages for name, package in tracked_packages.items(): branches = package.get("branches", None) if not branches: package["branches"] = assets.branches elif type(branches) is str: package["branches"] = [x.strip() for x in branches.split(",")] minimum_version = package.get("minimum-version", None) if minimum_version: v = (str(minimum_version).split(".") + [0, 0, 0])[:3] package["minimum-version"] = semver.VersionInfo(*v) return config def load(filename): with open(filename) as f: return validate(yaml.safe_load(f))