示例#1
0
def iter_repos_by_token(token):
    """Returns list of repos as list of dicts {id, owner, repo, active}.
    """
    client = GitHub(token=token)
    for repo in client.iter_repos():
        active = False
        data = repo.to_json()
        for hook in repo.iter_hooks():
            if hook.config.get('is_goodtables_hook'):
                active = True
        yield {
            'integration_name': 'github',
            'name': '{0}/{1}'.format(data['owner']['login'], data['name']),
            'conf': {
                'github_id': str(data['id'])
            },
            'active': active
        }
示例#2
0
文件: views.py 项目: salilsub/website
      offset = "0"
    else:
      offset = ""
    v['sortbydate'] = str(v["startDate"]["year"]) + offset + str(v["startDate"]["month"])
  sorted(values,key=lambda x: x["sortbydate"])
  map(lambda x: x.pop("sortbydate"),values)
  return values

def get_github_data():
  try:
    oauth_user=parser.get('github','user')
    oauth_user_token=parser.get('github','oauth')
  except NoSectionError,NoOptionError:
    return None
  gh = GitHub(oauth_user,token=oauth_user_token)
  repos = list(gh.iter_repos())
  repo_data = {}
  for r in repos:
    repo_name = getattr(r,'name')
    current_repo = r.__dict__
    new_repo = {}
    new_repo['full_name'] = current_repo['full_name']
    new_repo['url'] = current_repo['html_url']
    repo_data[repo_name] = new_repo

  return repo_data

def old_get_github_data():

  oauth_user_token=parser.get('github','oauth_key')
  oauth_user_secret=parser.get('github','oauth_secret')
示例#3
0
def run():
    # cli flags
    upstream_on = args.flags.contains('--upstream')
    only_type = args.grouped.get('--only', False)
    organization = args[0]

    os.chdir(GHSYNC_DIR)

    # API Object
    github = GitHub(login=GITHUB_USER, token=GITHUB_TOKEN)

    # repo slots
    repos = {}

    if not organization:
        repos['watched'] = [r for r in github.iter_subscribed()]
    repos['private'] = []
    repos['mirrors'] = []
    repos['public'] = []
    repos['forks'] = []

    # Collect GitHub repos via API
    for repo in github.iter_repos(organization):

        if repo.is_private():
            repos['private'].append(repo)
        elif repo.is_fork():
            repos['forks'].append(repo)
        elif ('mirror' in repo.description.lower()) or (repo.source):
            # mirrors owned by self if mirror in description...
            repos['mirrors'].append(repo)
        else:
            repos['public'].append(repo)

    for org, repos in repos.iteritems():
        for repo in repos:

            # create org directory (safely)
            try:
                os.makedirs(org)
            except OSError:
                pass

            # enter org dir
            os.chdir(org)

            # I own the repo
            is_private = (org in ('private', 'forks', 'mirror', 'public'))
            is_fork = (org == 'forks')

            if is_fork:
                repo.refresh()

            if not only_type or (org in only_type):

                # just `git pull` if it's already there
                if os.path.exists(repo.name):

                    os.chdir(repo.name)
                    puts(colored.red('Updating repo: {0.name}'.format(repo)))
                    os.system('git pull')

                    if is_fork and upstream_on:
                        #print repo.__dict__
                        puts(colored.red(
                            'Adding upstream: {0.parent}'.format(repo)))
                        os.system('git remote add upstream {0}'.format(
                            repo.parent.git_url
                            ))

                    os.chdir('..')

                else:
                    if is_private:
                        puts(colored.red(
                        'Cloning private repo: {repo.name}'.format(
                            repo=repo)))
                        os.system('git clone {0}'.format(repo.ssh_url))
                        print('git clone {0}'.format(repo.ssh_url))

                        if is_fork and upstream_on:
                            os.chdir(repo.name)
                            puts(colored.red('Adding upstream: {0}'.format(
                                repo.parent.name
                                )))
                            os.system('git remote add upstream {0}'.format(
                                repo.parent.git_url
                                ))
                            os.chdir('..')

                    else:
                        puts(colored.red('Cloning repo: {repo.name}'.format(
                            repo=repo)))
                        os.system('git clone {0}'.format(repo.git_url))
                        print ('git clone {0}'.format(repo.git_url))

            # return to base
            os.chdir('..')
示例#4
0
            offset = ""
        v['sortbydate'] = str(v["startDate"]["year"]) + offset + str(
            v["startDate"]["month"])
    sorted(values, key=lambda x: x["sortbydate"])
    map(lambda x: x.pop("sortbydate"), values)
    return values


def get_github_data():
    try:
        oauth_user = parser.get('github', 'user')
        oauth_user_token = parser.get('github', 'oauth')
    except NoSectionError, NoOptionError:
        return None
    gh = GitHub(oauth_user, token=oauth_user_token)
    repos = list(gh.iter_repos())
    repo_data = {}
    for r in repos:
        repo_name = getattr(r, 'name')
        current_repo = r.__dict__
        new_repo = {}
        new_repo['full_name'] = current_repo['full_name']
        new_repo['url'] = current_repo['html_url']
        repo_data[repo_name] = new_repo

    return repo_data


def old_get_github_data():

    oauth_user_token = parser.get('github', 'oauth_key')