def update_mirror(event, payload_or_payload_file, token_file): try: body = json.loads(payload_or_payload_file) except ValueError as error: with open(payload_or_payload_file, "r") as f: body = json.load(f) directory = os.path.dirname(os.path.abspath(__file__)) with open(directory+"/conf.yaml", "r") as f: config = yaml.load(f) config["workspace"] = os.path.expanduser(config["workspace"]) repo_clone_url = body['repository']['clone_url'] mirror_remote_url =\ config["source_repo_urls"][repo_clone_url]["mirror_remote_url"] user_repo_name = get_user_repo_from_github_url(mirror_remote_url) repository_folder = "{}/{}_{}".format(config["workspace"], user_repo_name['user'], user_repo_name['repo']) if not os.path.exists(repository_folder): os.makedirs(repository_folder) call(["git", "clone", "--mirror", repo_clone_url, repository_folder]) with cd(repository_folder): call(["git", "remote", "set-url", "--push", "origin", mirror_remote_url]) call(["git", "fetch", "-p", "origin"]) call(["git", "push", "--mirror"]) if event == "release": g = GithubMirrorUtils(tokenfile=token_file) g.create_release(user_repo_name['user'], user_repo_name['repo'], body["release"]["tag_name"], body["release"]["name"], body["release"]["body"], body["release"]["draft"], body["release"]["prerelease"], body["release"]["assets"])