From 85be57f6feccdb9ba9a3c2d1d1df8101fa3d70d8 Mon Sep 17 00:00:00 2001
From: Sebastian Poxhofer <secustor@users.noreply.github.com>
Date: Wed, 30 Sep 2020 10:02:02 +0200
Subject: [PATCH] feat(terraform): add releaseTimestamp to latest release
 (#7381)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 .../terraform-module/__snapshots__/index.spec.ts.snap    | 3 +++
 lib/datasource/terraform-module/index.ts                 | 9 +++++++++
 .../terraform-provider/__snapshots__/index.spec.ts.snap  | 2 ++
 lib/datasource/terraform-provider/index.ts               | 9 +++++++++
 4 files changed, 23 insertions(+)

diff --git a/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap b/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap
index 03209036e8..e507610b57 100644
--- a/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap
@@ -72,6 +72,7 @@ Object {
       "version": "0.3.10",
     },
     Object {
+      "releaseTimestamp": "2018-09-20T11:25:22.957584Z",
       "version": "0.4.0",
     },
   ],
@@ -201,6 +202,7 @@ Object {
       "version": "0.3.10",
     },
     Object {
+      "releaseTimestamp": "2018-09-20T11:25:22.957584Z",
       "version": "0.4.0",
     },
   ],
@@ -281,6 +283,7 @@ Object {
       "version": "0.3.10",
     },
     Object {
+      "releaseTimestamp": "2018-09-20T11:25:22.957584Z",
       "version": "0.4.0",
     },
   ],
diff --git a/lib/datasource/terraform-module/index.ts b/lib/datasource/terraform-module/index.ts
index d096500a60..2ea7e3d3c0 100644
--- a/lib/datasource/terraform-module/index.ts
+++ b/lib/datasource/terraform-module/index.ts
@@ -43,6 +43,8 @@ interface TerraformRelease {
   provider: string;
   source?: string;
   versions: string[];
+  version: string;
+  published_at: string;
 }
 
 export interface ServiceDiscoveryResult {
@@ -132,6 +134,13 @@ export async function getReleases({
     if (pkgUrl.startsWith('https://registry.terraform.io/')) {
       dep.homepage = `https://registry.terraform.io/modules/${repository}`;
     }
+    // set published date for latest release
+    const currentVersion = dep.releases.find((release) => {
+      return res.version === release.version;
+    });
+    if (currentVersion) {
+      currentVersion.releaseTimestamp = res.published_at;
+    }
     logger.trace({ dep }, 'dep');
     const cacheMinutes = 30;
     await packageCache.set(cacheNamespace, pkgUrl, dep, cacheMinutes);
diff --git a/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap b/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap
index 80bcd42a8b..ca752f7061 100644
--- a/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap
@@ -252,6 +252,7 @@ Object {
       "version": "1.36.1",
     },
     Object {
+      "releaseTimestamp": "2019-11-26T08:22:56Z",
       "version": "1.37.0",
     },
   ],
@@ -483,6 +484,7 @@ Object {
       "version": "1.36.1",
     },
     Object {
+      "releaseTimestamp": "2019-11-26T08:22:56Z",
       "version": "1.37.0",
     },
   ],
diff --git a/lib/datasource/terraform-provider/index.ts b/lib/datasource/terraform-provider/index.ts
index 0016d9b8c0..26fc1aa7ba 100644
--- a/lib/datasource/terraform-provider/index.ts
+++ b/lib/datasource/terraform-provider/index.ts
@@ -20,6 +20,8 @@ interface TerraformProvider {
   provider: string;
   source?: string;
   versions: string[];
+  version: string;
+  published_at: string;
 }
 
 interface TerraformProviderReleaseBackend {
@@ -54,6 +56,13 @@ async function queryRegistry(
   dep.releases = res.versions.map((version) => ({
     version,
   }));
+  // set published date for latest release
+  const currentVersion = dep.releases.find((release) => {
+    return res.version === release.version;
+  });
+  if (currentVersion) {
+    currentVersion.releaseTimestamp = res.published_at;
+  }
   dep.homepage = `${registryURL}/providers/${repository}`;
   logger.trace({ dep }, 'dep');
   return dep;
-- 
GitLab