pgreco / centos-git-common

Forked from centos-git-common 5 years ago
Clone
Blob Blame History Raw
#!/usr/bin/env python
'''Get list of repos from gitblit RPC, to grab CentOS sources'''

import optparse
import requests
import simplejson as json
import sys

RPCURL = "https://git.centos.org/rpc?req=LIST_REPOSITORIES"

def read_args():
    '''
        read in the command line args and set things up
    '''

    desc = '''Get list of git repositories from the GitBlit json RPC
           '''

    usage = "usage: %prog [options] "
    parser = optparse.OptionParser(usage=usage, description=desc)
    parser.add_option('-p', '--project', metavar="<PROJECTS>",
                      help='''project path (default 'rpms', could be 'all', 'core-sig'...)''',
                      default='rpms')

    parser.add_option('-u', '--url', metavar="<URL>",
                      help='URL to check (default %s)' % (RPCURL),
                      default = RPCURL
                      )

    (options, args) = parser.parse_args()
    return options

def get_repo_list(url, projectpath):
    '''return a list of repo URLs'''
    try:
        req = requests.get(url)
    except requests.exceptions.RequestException as e:
        print e
        sys.exit(1)

    payload = req.text
    repos = json.loads(payload)

    if projectpath != 'all':
        for repo in repos.keys():
            if repos[repo]['projectPath'] != projectpath:
                del repos[repo]

    return repos.keys()

def main():
    options = read_args()
    repos = get_repo_list(url=options.url, projectpath=options.project)
    print '\n'.join(repos)
    
if __name__ == "__main__":
    main()