--- centos.git.repolist.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) create mode 100755 centos.git.repolist.py diff --git a/centos.git.repolist.py b/centos.git.repolist.py new file mode 100755 index 0000000..35be347 --- /dev/null +++ b/centos.git.repolist.py @@ -0,0 +1,57 @@ +#!/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 'all', could be 'rpms', '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() -- 1.7.1