def update_packages(repo: github.Repository.Repository, branch_name: str, config: dict) -> None: try: packages_content = repo.get_contents("packages.yml") packages = ruamel.yaml.load( packages_content.decoded_content, Loader=ruamel.yaml.RoundTripLoader, preserve_quotes=True, ) for package in packages["packages"]: if "package" in package: name = package["package"] if name in config["packages"]: package["version"] = config["packages"][name] if "git" in package: name = package["git"] if name in config["packages"]: package["revision"] = config["packages"][name] repo.update_file( path=packages_content.path, message="Updating package dependendcies", content=ruamel.yaml.dump(packages, Dumper=ruamel.yaml.RoundTripDumper), sha=packages_content.sha, branch=branch_name, ) except github.GithubException: print("'packages.yml' not found in repo.")
def update_requirements(repo: github.Repository.Repository, branch_name: str, config: str) -> None: try: requirements_content = repo.get_contents( "integration_tests/requirements.txt") new_content = "" for requirement in config["requirements"]: new_content += f"{requirement['name']}=={requirement['version']}\n" repo.update_file( path=requirements_content.path, message="Updating dbt version in requirements.txt", content=new_content, sha=requirements_content.sha, branch=branch_name, ) except github.GithubException: repo.create_file( path="integration_tests/requirements.txt", message="Updating dbt version in requirements.txt", content=new_content, branch=branch_name, )
def update_project(repo: github.Repository.Repository, branch_name: str, config: str) -> None: project_content = repo.get_contents("dbt_project.yml") project = ruamel.yaml.load( project_content.decoded_content, Loader=ruamel.yaml.RoundTripLoader, preserve_quotes=True, ) project["require-dbt-version"] = config["require-dbt-version"] current_version = project["version"] bump_type = config["version-bump-type"] current_version_split = current_version.split(".") if bump_type == "patch": current_version_split[2] = str(int(current_version_split[2]) + 1) elif bump_type == "minor": current_version_split[1] = str(int(current_version_split[1]) + 1) current_version_split[2] = "0" elif bump_type == "major": current_version_split[0] = str(int(current_version_split[0]) + 1) current_version_split[1] = "0" current_version_split[2] = "0" new_version = ".".join(current_version_split) project["version"] = new_version repo.update_file( path=project_content.path, message="Updating require-dbt-version", content=ruamel.yaml.dump(project, Dumper=ruamel.yaml.RoundTripDumper), sha=project_content.sha, branch=branch_name, )