| |
| |
| |
| |
| |
| |
| |
| |
| '''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('-b', '--branch', metavar="<branch name>", |
| help='Only list repos with this branch (default master)', |
| default = 'master') |
| |
| 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, branch, projectpath): |
| '''return a list of repo URLs''' |
| try: |
| req = requests.get(url) |
| except requests.exceptions.RequestException as err_msg: |
| print err_msg |
| sys.exit(1) |
| |
| payload = req.text |
| repos = json.loads(payload) |
| branchname = 'refs/heads/' + branch |
| |
| for repo in repos.keys(): |
| if projectpath != 'all': |
| if repos[repo]['projectPath'] != projectpath: |
| del repos[repo] |
| continue |
| if branchname not in repos[repo]['availableRefs']: |
| del repos[repo] |
| |
| return repos.keys() |
| |
| def main(): |
| '''Broken out so it can be inherited if someone wants''' |
| options = read_args() |
| repos = get_repo_list(url=options.url, branch=options.branch, projectpath=options.project) |
| if repos: |
| print '\n'.join(repos) |
| |
| if __name__ == "__main__": |
| main() |