diff --git a/lib/util/git/url.spec.ts b/lib/util/git/url.spec.ts index cc05cc63e28c88c00dfc9fb08c503bd1c9f818bc..ca32e45f8a1829d3c1612a65d17055ae23a3c534 100644 --- a/lib/util/git/url.spec.ts +++ b/lib/util/git/url.spec.ts @@ -58,6 +58,9 @@ describe('util/git/url', () => { expect( getHttpUrl('http://gitlab.com:8443/', 'gitlab-ci-token:token') ).toBe('http://gitlab-ci-token:token@gitlab.com:8443/'); + expect(getHttpUrl('git@gitlab.com:some/repo', 'token')).toBe( + 'https://gitlab-ci-token:token@gitlab.com/some/repo' + ); }); it('returns github url with token', () => { @@ -70,6 +73,9 @@ describe('util/git/url', () => { expect( getHttpUrl('http://github.com:8443/', 'x-access-token:token') ).toBe('http://x-access-token:token@github.com:8443/'); + expect(getHttpUrl('git@github.com:some/repo', 'token')).toBe( + 'https://x-access-token:token@github.com/some/repo' + ); }); }); diff --git a/lib/util/git/url.ts b/lib/util/git/url.ts index 7857f66bd90196cf9261c2d4b786f452c6f8b19a..75bf8c2a605144cd3d745737c49d8b797aa7a44d 100644 --- a/lib/util/git/url.ts +++ b/lib/util/git/url.ts @@ -11,10 +11,14 @@ export function parseGitUrl(url: string): gitUrlParse.GitUrl { export function getHttpUrl(url: string, token?: string): string { const parsedUrl = parseGitUrl(url); + const protocol = regEx(/^https?$/).exec(parsedUrl.protocol) + ? parsedUrl.protocol + : 'https'; + parsedUrl.token = token ?? ''; if (token) { - switch (detectPlatform(url)) { + switch (detectPlatform(parsedUrl.toString(protocol))) { case 'gitlab': parsedUrl.token = token.includes(':') ? token @@ -28,9 +32,6 @@ export function getHttpUrl(url: string, token?: string): string { } } - const protocol = regEx(/^https?$/).exec(parsedUrl.protocol) - ? parsedUrl.protocol - : 'https'; return parsedUrl.toString(protocol); }