diff --git a/lib/datasource/github/index.js b/lib/datasource/github/index.js index 0530ee0c1bf393e104b83498a93e049aea917ea5..63141067bf8a7d6add6b08320b16d662e7a2861f 100644 --- a/lib/datasource/github/index.js +++ b/lib/datasource/github/index.js @@ -90,8 +90,8 @@ async function getDigest(config) { */ async function getPkgReleases(purl) { - const { lookupName: repo, qualifiers } = purl; - const lookupType = qualifiers.lookupType || 'tags'; + const { lookupName: repo } = purl; + const lookupType = purl.lookupType || 'tags'; let versions; const cachedResult = await renovateCache.get( cacheNamespace, @@ -102,7 +102,7 @@ async function getPkgReleases(purl) { return cachedResult; } try { - if (lookupType === 'release') { + if (lookupType === 'releases') { const url = `https://api.github.com/repos/${repo}/releases?per_page=100`; versions = (await ghGot(url, { paginate: true })).body.map( o => o.tag_name diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js index 1ddd483427754ecfaabf8b1d7e0da5dd44a38090..de92493171df5bbecebd7893b73567ebf9b3c17d 100644 --- a/lib/manager/bazel/extract.js +++ b/lib/manager/bazel/extract.js @@ -128,7 +128,7 @@ function extractPackageFile(content) { dep.depName = depName; dep.repo = parsedUrl.repo; dep.currentValue = parsedUrl.currentValue; - dep.purl = 'pkg:github/' + dep.repo + '?lookupType=release'; + dep.purl = 'pkg:github/' + dep.repo + '?lookupType=releases'; deps.push(dep); } else { logger.info( diff --git a/lib/util/purl.js b/lib/util/purl.js index aa1ff81d312f866f87197a968f84d2ec22dda3b6..10c16376a163d09796fdcaccb50843edf4af761c 100644 --- a/lib/util/purl.js +++ b/lib/util/purl.js @@ -41,6 +41,10 @@ function parse(input) { const [key, val] = qualifier.split('='); res.qualifiers[key] = val; }); + if (res.qualifiers.lookupType) { + res.lookupType = res.qualifiers.lookupType; + delete res.qualifiers.lookupType; + } } else { res.qualifiers = {}; } diff --git a/test/datasource/github.spec.js b/test/datasource/github.spec.js index c83d4230648b97a12abc9133fd42c027cfa65166..e17111ba732119c48023da4af5e25fa3073ac2d1 100644 --- a/test/datasource/github.spec.js +++ b/test/datasource/github.spec.js @@ -88,7 +88,7 @@ describe('datasource/github', () => { ]; ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await datasource.getPkgReleases({ - purl: 'pkg:github/some/dep?lookupType=release', + purl: 'pkg:github/some/dep?lookupType=releases', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(2); diff --git a/test/manager/bazel/__snapshots__/extract.spec.js.snap b/test/manager/bazel/__snapshots__/extract.spec.js.snap index ef1f04fb6057b30d3bc027608911c069c783f80b..34f208315e85b0f2f37c8f0ed2857cb9eb42962d 100644 --- a/test/manager/bazel/__snapshots__/extract.spec.js.snap +++ b/test/manager/bazel/__snapshots__/extract.spec.js.snap @@ -90,7 +90,7 @@ Array [ ", "depName": "io_bazel_rules_go", "depType": "http_archive", - "purl": "pkg:github/bazelbuild/rules_go?lookupType=release", + "purl": "pkg:github/bazelbuild/rules_go?lookupType=releases", "repo": "bazelbuild/rules_go", }, Object { @@ -107,7 +107,7 @@ Array [ ", "depName": "bazel_skylib", "depType": "http_archive", - "purl": "pkg:github/bazelbuild/bazel-skylib?lookupType=release", + "purl": "pkg:github/bazelbuild/bazel-skylib?lookupType=releases", "repo": "bazelbuild/bazel-skylib", }, ] diff --git a/test/util/__snapshots__/purl.spec.js.snap b/test/util/__snapshots__/purl.spec.js.snap index 81f9876f11e5b856fa8a2160721455f3e541b353..b6c0af7e7fb5219eb41c5d4d69e3df9a72d26c6b 100644 --- a/test/util/__snapshots__/purl.spec.js.snap +++ b/test/util/__snapshots__/purl.spec.js.snap @@ -1,5 +1,14 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`util/purl parse() parses github with lookupType 1`] = ` +Object { + "datasource": "github", + "lookupName": "abc/def", + "lookupType": "releases", + "qualifiers": Object {}, +} +`; + exports[`util/purl parse() parses namespaced npm 1`] = ` Object { "datasource": "npm", diff --git a/test/util/purl.spec.js b/test/util/purl.spec.js index ec0761b235719f31d58d413216381729c2a47f85..c0b1d13e9407133d4a168ac23096093f2f803129 100644 --- a/test/util/purl.spec.js +++ b/test/util/purl.spec.js @@ -26,5 +26,8 @@ describe('util/purl', () => { it('parses npm with version and 2 qualifiers and subpath', () => { expect(parse('pkg:npm/foo@1.0.0?a=b&c=d#stop')).toMatchSnapshot(); }); + it('parses github with lookupType', () => { + expect(parse('pkg:github/abc/def?lookupType=releases')).toMatchSnapshot(); + }); }); });