#!/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()