From 0b6ad1c898d532ff90815367a739dcf4f8df1ef2 Mon Sep 17 00:00:00 2001 From: Grigorij Eleskin <Nyarum@users.noreply.github.com> Date: Thu, 29 Nov 2018 11:39:45 +0400 Subject: [PATCH] fix(gomod): support remote option in go_repository (#2877) --- lib/manager/bazel/extract.js | 10 ++++++ test/manager/bazel/extract.spec.js | 55 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js index 447f7a9d85..01ae14945e 100644 --- a/lib/manager/bazel/extract.js +++ b/lib/manager/bazel/extract.js @@ -101,6 +101,16 @@ function extractPackageFile(content) { dep.depName = depName; dep.currentValue = currentValue || commit.substr(0, 7); dep.purl = 'pkg:go/' + importpath; + if (remote) { + const remoteMatch = remote.match( + /https:\/\/github\.com(?:.*\/)(([a-zA-Z]+)([-])?([a-zA-Z]+))/ + ); + if (remoteMatch && remoteMatch[0].length === remote.length) { + dep.purl = 'pkg:go/' + remote.replace('https://', ''); + } else { + dep.skipReason = 'unsupported-remote'; + } + } if (commit) { dep.currentValue = 'v0.0.0'; dep.currentDigest = commit; diff --git a/test/manager/bazel/extract.spec.js b/test/manager/bazel/extract.spec.js index 6beb164e3c..b66f0a3d0d 100644 --- a/test/manager/bazel/extract.spec.js +++ b/test/manager/bazel/extract.spec.js @@ -24,5 +24,60 @@ describe('lib/manager/bazel/extract', () => { const res = extractPackageFile(workspaceFile, config); expect(res.deps).toMatchSnapshot(); }); + it('check remote option in go_repository', () => { + const successStory = extractPackageFile( + ` +go_repository( + name = "test_repository", + importpath = "github.com/google/uuid", + remote = "https://github.com/test/uuid-fork", + commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" +) + `, + config + ); + expect(successStory.deps[0].purl).toBe( + 'pkg:go/github.com/test/uuid-fork' + ); + + const badStory = extractPackageFile( + ` +go_repository( + name = "test_repository", + importpath = "github.com/google/uuid", + remote = "https://github.com/test/uuid.git#branch", + commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" +) + `, + config + ); + expect(badStory.deps[0].skipReason).toBe('unsupported-remote'); + + const gheStory = extractPackageFile( + ` +go_repository( + name = "test_repository", + importpath = "github.com/google/uuid", + remote = "https://github.mycompany.com/test/uuid", + commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" +) + `, + config + ); + expect(gheStory.deps[0].skipReason).toBe('unsupported-remote'); + + const gitlabRemote = extractPackageFile( + ` +go_repository( + name = "test_repository", + importpath = "github.com/google/uuid", + remote = "https://gitlab.com/test/uuid", + commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" +) + `, + config + ); + expect(gitlabRemote.deps[0].skipReason).toBe('unsupported-remote'); + }); }); }); -- GitLab