From fa71763a72eb8d54091b65b98752725a68aa2867 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Fri, 5 Nov 2021 13:45:29 +0300
Subject: [PATCH] refactor(gitlab): Extract getSourceUrl function (#12511)

---
 lib/datasource/gitlab-tags/index.ts |  8 ++++----
 lib/datasource/gitlab-tags/util.ts  | 13 +++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)
 create mode 100644 lib/datasource/gitlab-tags/util.ts

diff --git a/lib/datasource/gitlab-tags/index.ts b/lib/datasource/gitlab-tags/index.ts
index 2098701568..b7c75fafca 100644
--- a/lib/datasource/gitlab-tags/index.ts
+++ b/lib/datasource/gitlab-tags/index.ts
@@ -1,15 +1,15 @@
 import * as packageCache from '../../util/cache/package';
 import { GitlabHttp } from '../../util/http/gitlab';
-import { regEx } from '../../util/regex';
 import { joinUrlParts } from '../../util/url';
 import type { GetReleasesConfig, ReleaseResult } from '../types';
 import type { GitlabTag } from './types';
+import { defaultRegistryUrl, getDepHost, getSourceUrl } from './util';
 
 export const id = 'gitlab-tags';
 const gitlabApi = new GitlabHttp(id);
 
 export const customRegistrySupport = true;
-export const defaultRegistryUrls = ['https://gitlab.com'];
+export const defaultRegistryUrls = [defaultRegistryUrl];
 export const registryStrategy = 'first';
 
 const cacheNamespace = 'datasource-gitlab';
@@ -23,7 +23,7 @@ export async function getReleases({
   registryUrl,
   lookupName: repo,
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
-  const depHost = registryUrl.replace(regEx(/\/api\/v4$/), '');
+  const depHost = getDepHost(registryUrl);
 
   const cachedResult = await packageCache.get<ReleaseResult>(
     cacheNamespace,
@@ -51,7 +51,7 @@ export async function getReleases({
   ).body;
 
   const dependency: ReleaseResult = {
-    sourceUrl: joinUrlParts(depHost, repo),
+    sourceUrl: getSourceUrl(repo, registryUrl),
     releases: null,
   };
   dependency.releases = gitlabTags.map(({ name, commit }) => ({
diff --git a/lib/datasource/gitlab-tags/util.ts b/lib/datasource/gitlab-tags/util.ts
new file mode 100644
index 0000000000..789424210c
--- /dev/null
+++ b/lib/datasource/gitlab-tags/util.ts
@@ -0,0 +1,13 @@
+import { regEx } from '../../util/regex';
+import { joinUrlParts } from '../../util/url';
+
+export const defaultRegistryUrl = 'https://gitlab.com';
+
+export function getDepHost(registryUrl: string = defaultRegistryUrl): string {
+  return registryUrl.replace(regEx(/\/api\/v4$/), '');
+}
+
+export function getSourceUrl(lookupName: string, registryUrl?: string): string {
+  const depHost = getDepHost(registryUrl);
+  return joinUrlParts(depHost, lookupName);
+}
-- 
GitLab