Add support for using gitweb
There are projects which do not provide git mirror for code URLs apart
from Gerrit's gitweb interface (e.g. OpenDaylight [1]).
[1] https://www.opendaylight.org
Issue-ID: ONAPARC-540
Change-Id: I48c26b81f4886a12e5cdc4dfbfc99538f180449e
Signed-off-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
diff --git a/bootstrap/codesearch/create_config.py b/bootstrap/codesearch/create_config.py
index 109219d..aef99e7 100755
--- a/bootstrap/codesearch/create_config.py
+++ b/bootstrap/codesearch/create_config.py
@@ -14,6 +14,9 @@
MAGIC_PREFIX = ")]}'"
+GITWEB_ANCHOR = "#l{line}"
+GIT_ANCHOR = "#n{line}"
+
def get_projects_list(gerrit):
"""Request list of all available projects from ONAP Gerrit."""
@@ -27,15 +30,30 @@
return projects.keys()
-def create_repos_list(projects, git):
+def create_repos_list(projects, gitweb, git, gerrit):
"""Create a map of all projects to their repositories' URLs."""
+ gerrit_project_url = "{}/{}.git"
+ gitweb_code_url = "{}/gitweb?p={}.git;hb=HEAD;a=blob;f={{path}}{{anchor}}"
+
+ git_project_url = "{}/{}"
+ git_code_url = "{url}/tree/{path}{anchor}"
+
repos_list = {}
for project in projects:
+ if gitweb:
+ project_url = gerrit_project_url.format(gerrit, project)
+ code_url = gitweb_code_url.format(gerrit, project)
+ anchor = GITWEB_ANCHOR
+ else:
+ project_url = git_project_url.format(git, project)
+ code_url = git_code_url
+ anchor = GIT_ANCHOR
+
repos_list[project] = {
- "url": "{}/{}".format(git, project),
+ "url": project_url,
"url-pattern": {
- "base-url": "{url}/tree/{path}{anchor}",
- "anchor": "#n{line}"
+ "base-url": code_url,
+ "anchor": anchor
}
}
@@ -46,7 +64,9 @@
"""Return parsed command-line arguments."""
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--gerrit', help='Gerrit address', default=DEFAULT_GERRIT)
- parser.add_argument('--git', help='git address', default=DEFAULT_GIT)
+ access = parser.add_mutually_exclusive_group()
+ access.add_argument('--gitweb', help='use Gerrit\'s gitweb (bool)', action='store_true')
+ access.add_argument('--git', help='use external git (address)', default=DEFAULT_GIT)
return parser.parse_args()
@@ -55,7 +75,8 @@
"""Main entry point for the script."""
arguments = parse_arguments()
- repos = create_repos_list(get_projects_list(arguments.gerrit), arguments.git)
+ projects = get_projects_list(arguments.gerrit)
+ repos = create_repos_list(projects, arguments.gitweb, arguments.git, arguments.gerrit)
config = {
"max-concurrent-indexers": 2,
"dbpath": "data",