From 6433b5eb5192d927940ba936758933fc6ebeb0ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20lengronne?= Date: Wed, 26 Aug 2020 16:28:31 +0200 Subject: [PATCH 1/9] WIP: gemstash integration --- lib/datasource/rubygems/get.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index b99064fa055114..a7807e29c70c75 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -9,6 +9,7 @@ const http = new Http(id); const INFO_PATH = '/api/v1/gems'; const VERSIONS_PATH = '/api/v1/versions'; +const DEPENDENCIES_PATH = 'api/v1/dependencies.json'; const getHeaders = (): OutgoingHttpHeaders => { return { hostType: id }; From 74d6aa566457650a07945cd6ec88b8dcea01bc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 16:43:56 +0200 Subject: [PATCH 2/9] gemstash compatibility --- lib/datasource/rubygems/get.ts | 70 +++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index a7807e29c70c75..52bcbcff011534 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -33,6 +33,24 @@ export async function fetch( return response.body; } +export async function fetch_deps( + dependency: string, + registry: string, + path: string +): Promise { + const headers = getHeaders(); + + const name = `${path}?gems=${dependency}`; + const baseUrl = ensureTrailingSlash(registry); + + logger.trace({ dependency }, `RubyGems lookup request: ${baseUrl} ${name}`); + const response = (await http.getJson(name, { baseUrl, headers })) || { + body: undefined, + }; + + return response.body; +} + export async function getDependency( dependency: string, registry: string @@ -52,23 +70,41 @@ export async function getDependency( return null; } - const versions = (await fetch(dependency, registry, VERSIONS_PATH)) || []; - - const releases = versions.map( - ({ - number: version, - platform: rubyPlatform, - created_at: releaseTimestamp, - rubygems_version: rubygemsVersion, - ruby_version: rubyVersion, - }) => ({ - version, - rubyPlatform, - releaseTimestamp, - rubygemsVersion, - rubyVersion, - }) - ); + const testendpoint = (await http.get(VERSIONS_PATH)); + + if (testendpoint.statusCode == 404 ) { + // Let's try with the dependencies.json endpoint then + const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; + + const releases = versions.map( + ({ + number: version, + platform: rubyPlatform, + }) => ({ + version, + rubyPlatform, + }) + ); + + } else { + const versions = (await fetch(dependency, registry, VERSIONS_PATH)) || []; + + const releases = versions.map( + ({ + number: version, + platform: rubyPlatform, + created_at: releaseTimestamp, + rubygems_version: rubygemsVersion, + ruby_version: rubyVersion, + }) => ({ + version, + rubyPlatform, + releaseTimestamp, + rubygemsVersion, + rubyVersion, + }) + ); + } return { releases, From 22aaaf3bddf2045965c52be1b78a85b5b6b696be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 16:53:17 +0200 Subject: [PATCH 3/9] declare releases outside the if --- lib/datasource/rubygems/get.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index 52bcbcff011534..8aa77758720fa5 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -71,12 +71,13 @@ export async function getDependency( } const testendpoint = (await http.get(VERSIONS_PATH)); + const releases = {}; if (testendpoint.statusCode == 404 ) { // Let's try with the dependencies.json endpoint then const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; - const releases = versions.map( + releases = versions.map( ({ number: version, platform: rubyPlatform, @@ -89,7 +90,7 @@ export async function getDependency( } else { const versions = (await fetch(dependency, registry, VERSIONS_PATH)) || []; - const releases = versions.map( + releases = versions.map( ({ number: version, platform: rubyPlatform, From 7902c85cf881cec8b4b9d7631062a21f153e27ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 16:58:13 +0200 Subject: [PATCH 4/9] use let instead of const for releases --- lib/datasource/rubygems/get.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index 8aa77758720fa5..86fee40e28eaf7 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -71,7 +71,7 @@ export async function getDependency( } const testendpoint = (await http.get(VERSIONS_PATH)); - const releases = {}; + let releases = {}; if (testendpoint.statusCode == 404 ) { // Let's try with the dependencies.json endpoint then From c531609d72239f83f96bdb03344a3b89a7588bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 17:03:40 +0200 Subject: [PATCH 5/9] do not declare releases type --- lib/datasource/rubygems/get.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index 86fee40e28eaf7..e92b585fa9d997 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -71,9 +71,9 @@ export async function getDependency( } const testendpoint = (await http.get(VERSIONS_PATH)); - let releases = {}; + let releases; - if (testendpoint.statusCode == 404 ) { + if (testendpoint.statusCode == 404) { // Let's try with the dependencies.json endpoint then const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; From 48406683c4e85414b944b853e9062fbf6f7caf4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 17:07:19 +0200 Subject: [PATCH 6/9] strict equality --- lib/datasource/rubygems/get.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index e92b585fa9d997..5fe8e533a91725 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -73,7 +73,7 @@ export async function getDependency( const testendpoint = (await http.get(VERSIONS_PATH)); let releases; - if (testendpoint.statusCode == 404) { + if (testendpoint.statusCode === 404) { // Let's try with the dependencies.json endpoint then const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; From b9e3929179a76e1d4f335b93d1c65f08481c6739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 17:13:29 +0200 Subject: [PATCH 7/9] try to correct prettier error --- lib/datasource/rubygems/get.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index 5fe8e533a91725..8c8e3c83eb1a9d 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -86,7 +86,6 @@ export async function getDependency( rubyPlatform, }) ); - } else { const versions = (await fetch(dependency, registry, VERSIONS_PATH)) || []; From d16f66b20995c9c69b70e026397c79a9857a46f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 17:31:41 +0200 Subject: [PATCH 8/9] unit tests problems --- lib/datasource/rubygems/get.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index 8c8e3c83eb1a9d..a434a137add592 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -74,6 +74,8 @@ export async function getDependency( let releases; if (testendpoint.statusCode === 404) { + logger.debug({ dependency }, '/api/v1/versions does not exist. Using /api/v1/dependencies.json'); + // Let's try with the dependencies.json endpoint then const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; From 54afe87b17a5490a0cbe8fc1a37da1ac52407f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mich=C3=A9e=20Lengronne?= Date: Wed, 26 Aug 2020 17:44:19 +0200 Subject: [PATCH 9/9] try to lint more --- lib/datasource/rubygems/get.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/datasource/rubygems/get.ts b/lib/datasource/rubygems/get.ts index a434a137add592..7e6c1cd881fc1c 100644 --- a/lib/datasource/rubygems/get.ts +++ b/lib/datasource/rubygems/get.ts @@ -75,8 +75,6 @@ export async function getDependency( if (testendpoint.statusCode === 404) { logger.debug({ dependency }, '/api/v1/versions does not exist. Using /api/v1/dependencies.json'); - - // Let's try with the dependencies.json endpoint then const versions = (await fetch_deps(dependency, registry, DEPENDENCIES_PATH)) || []; releases = versions.map(