def test_git_clone_to_dir():
    local_repos_dir = tempfile.mkdtemp()
    try:
        repo_dir = git_clone_to_dir(repo, url, local_repos_dir)
        assert repo_dir is not None
    finally:
        shutil.rmtree(local_repos_dir)
def test_git_track_all_branches():
    local_repos_dir = tempfile.mkdtemp()
    try:
        repo_dir = git_clone_to_dir(repo, url, local_repos_dir)
        git_track_all_branches(repo_dir)
        with lcd(repo_dir):
            track_branches = local('git branch --track', capture=True)
            assert track_branches.find('develop') >= 0
            assert track_branches.find('gh-pages') >= 0
    finally:
        shutil.rmtree(local_repos_dir)
Example #3
0
def entry_point():
    args = docopt(CLI_DOC)
    print(args)

    if args['search-repo']:
        items = search_repos(
            args['<language>'],
            args['<stars_lower_bound>'],
            args['<stars_upper_bound>'],
        )
        # simple print full names.
        for item in items:
            print("'{0}'".format(item['full_name']))
        return 0

    gitlab_config = load_gitlab_config(args['--gitlab-config'])
    repo_ids = load_repo_config(args['--repo-config'])

    gitlab_project_handler = GitLabProjectAPIHandler(gitlab_config)

    if args['view-names-mapping']:
        for repo_id in repo_ids:
            success, url = gitlab_project_handler.check_existence(
                repo_id, auto_info=False,
            )
            template = "| [{0}]({1}) | `{2}` |"
            msg = template.format(
                repo_id.fullname, repo_id.url,
                url if success else 'Not Forked Yet.',
            )
            print(msg)
        return 0

    local_repos_dir = os.getcwd()
    for repo_id in repo_ids:
        # download.
        repo_dir = git_clone_to_dir(
            repo_id.repo,
            repo_id.url,
            local_repos_dir,
        )

        if repo_dir is None:
            print('Skipping {0}'.format(repo_id.fullname))
            continue

        # create project in gitlab.
        remote_url = gitlab_project_handler.create_project(repo_id)
        # configure local git repo and push.
        # git_track_all_branches(repo_dir)
        git_push(repo_dir, 'git-oa', remote_url)