コード例 #1
0
ファイル: setup-mirror.py プロジェクト: Fiware/tools.Webhook
def setup_mirror(repo_clone_url, mirror_remote_url, token_file, pr_hook_url):

    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"])
        pr_hook_url = config["pr_hook_url"]

    mirror_user_repo_name = get_user_repo_from_github_url(mirror_remote_url)
    clone_user_repo_name = get_user_repo_from_github_url(repo_clone_url)
    repository_folder = "{}/{}_{}".format(config["workspace"],
                                          mirror_user_repo_name['user'],
                                          mirror_user_repo_name['repo'])

    g = GithubMirrorUtils(token_file)

    if not os.path.exists(repository_folder):

        g.create_update_mirror_repo(mirror_user_repo_name['user'],
                                    mirror_user_repo_name['repo'],
                                    repo_clone_url,
                                    pr_hook_url)

        os.makedirs(repository_folder)

        if not ("source_repo_urls" in config):
            config["source_repo_urls"] = {}

        config["source_repo_urls"][repo_clone_url] = {"mirror_remote_url":
                                                      mirror_remote_url}

        with open(directory+"/conf.yaml", "w") as f:
            yaml.dump(config, f, default_flow_style=False)

    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"])

    g.recreate_releases(clone_user_repo_name['user'],
                        clone_user_repo_name['repo'],
                        mirror_user_repo_name['user'],
                        mirror_user_repo_name['repo'])
コード例 #2
0
def deny_pull_requests(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"])

    mirror_remote_url_from_body = body['repository']['ssh_url']
    mirror_user_repo_name = None

    for repo_clone_url in config['source_repo_urls']:
        mirror_remote_url =\
            config['source_repo_urls'][repo_clone_url]["mirror_remote_url"]

        if mirror_remote_url == mirror_remote_url_from_body:
            src_url = repo_clone_url
            mirror_user_repo_name =\
                get_user_repo_from_github_url(mirror_remote_url)

            print mirror_user_repo_name
            break

    if mirror_user_repo_name is None:
        print ("Entry {} not found in configuration "
               "file.").format(mirror_remote_url_from_body)
        return

    g = GithubMirrorUtils(tokenfile=token_file)

    org_name = mirror_user_repo_name['user']
    repo_name = mirror_user_repo_name['repo']
    pull_request_number = body['pull_request']['number']

    print "org_name:", org_name
    print "repo_name:", repo_name
    print "pull_request_number:", pull_request_number
    print "src_url:", src_url

    g.close_pull_request(org_name, repo_name, pull_request_number, src_url)
コード例 #3
0
def update_def_mirrors(token_file):

    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"])
        pr_hook_url = config["pr_hook_url"]

    for repo_clone_url in config["source_repo_urls"]:
        mirror_remote_url = config["source_repo_urls"][repo_clone_url]["mirror_remote_url"]
        mirror_user_repo_name = get_user_repo_from_github_url(mirror_remote_url)

        print mirror_user_repo_name

        g = GithubMirrorUtils(tokenfile=token_file)
        g.create_update_mirror_repo(
            mirror_user_repo_name["user"], mirror_user_repo_name["repo"], repo_clone_url, pr_hook_url
        )
コード例 #4
0
ファイル: update-mirror.py プロジェクト: Fiware/tools.Webhook
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"])
コード例 #5
0
def recreate_releases(token_file):

    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"])

    for repo_clone_url in config['source_repo_urls']:
        mirror_remote_url =\
            config['source_repo_urls'][repo_clone_url]["mirror_remote_url"]
        mirror_user_repo_name =\
            get_user_repo_from_github_url(mirror_remote_url)
        clone_user_repo_name = get_user_repo_from_github_url(repo_clone_url)

        g = GithubMirrorUtils(tokenfile=token_file)
        g.recreate_releases(clone_user_repo_name['user'],
                            clone_user_repo_name['repo'],
                            mirror_user_repo_name['user'],
                            mirror_user_repo_name['repo'])