openstack/generate-gitmodules

64 lines
1.8 KiB
Python
Executable File

#!/usr/bin/python
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import json
import requests
TEMPLATE = """[submodule "%s"]
\tpath = %s
\turl = https://review.openstack.org/%s.git
\tbranch = .
"""
# only return projects starting with openstack
CONFIG = ("https://review.openstack.org:443/projects/?p=openstack")
def find_integrated_gate_projects():
r = requests.get(CONFIG)
# strip off first few chars because 'the JSON response body starts with a
# magic prefix line that must be stripped before feeding the rest of the
# response body to a JSON parser'
# https://review.openstack.org/Documentation/rest-api.html
gerrit_projects = json.loads(r.text[4:])
# Ignore openstack-attic
orgs = ['openstack/', 'openstack-infra/', 'openstack-dev/']
blacklist = ['openstack/openstack']
projects = []
for project in gerrit_projects:
if any(project.startswith(org) for org in orgs):
if project not in blacklist:
projects.append(project)
return projects
def gen_gitmodules(projects):
projects = sorted(projects)
with open(".gitmodules", 'w') as f:
for p in projects:
ns, name = p.split('/')
f.write(TEMPLATE % (name, name, p))
def main():
projects = find_integrated_gate_projects()
gen_gitmodules(projects)
if __name__ == '__main__':
main()