From 28e90ef634043b69253e924eb888f29bf8252704 Mon Sep 17 00:00:00 2001 From: Sebastian Poxhofer <secustor@users.noreply.github.com> Date: Wed, 2 Dec 2020 16:02:49 +0100 Subject: [PATCH] feat(terraform-version): implement tfenv version file updates (#7849) --- .../__snapshots__/extract.spec.ts.snap | 21 +++++++++++++++++++ lib/manager/terraform-version/extract.spec.ts | 14 +++++++++++++ lib/manager/terraform-version/extract.ts | 13 ++++++++++++ lib/manager/terraform-version/index.ts | 9 ++++++++ lib/manager/terraform-version/readme.md | 1 + 5 files changed, 58 insertions(+) create mode 100644 lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap create mode 100644 lib/manager/terraform-version/extract.spec.ts create mode 100644 lib/manager/terraform-version/extract.ts create mode 100644 lib/manager/terraform-version/index.ts create mode 100644 lib/manager/terraform-version/readme.md diff --git a/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap b/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap new file mode 100644 index 0000000000..dabebdbc5b --- /dev/null +++ b/lib/manager/terraform-version/__snapshots__/extract.spec.ts.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`lib/manager/terraform-version/extract extractPackageFile() returns a result 1`] = ` +Array [ + Object { + "currentValue": "12.0.0", + "datasource": "github-releases", + "depName": "hashicorp/terraform", + }, +] +`; + +exports[`lib/manager/terraform-version/extract extractPackageFile() skips non ranges 1`] = ` +Array [ + Object { + "currentValue": "latest", + "datasource": "github-releases", + "depName": "hashicorp/terraform", + }, +] +`; diff --git a/lib/manager/terraform-version/extract.spec.ts b/lib/manager/terraform-version/extract.spec.ts new file mode 100644 index 0000000000..31200c8469 --- /dev/null +++ b/lib/manager/terraform-version/extract.spec.ts @@ -0,0 +1,14 @@ +import { extractPackageFile } from './extract'; + +describe('lib/manager/terraform-version/extract', () => { + describe('extractPackageFile()', () => { + it('returns a result', () => { + const res = extractPackageFile('12.0.0\n'); + expect(res.deps).toMatchSnapshot(); + }); + it('skips non ranges', () => { + const res = extractPackageFile('latest'); + expect(res.deps).toMatchSnapshot(); + }); + }); +}); diff --git a/lib/manager/terraform-version/extract.ts b/lib/manager/terraform-version/extract.ts new file mode 100644 index 0000000000..1d466f582b --- /dev/null +++ b/lib/manager/terraform-version/extract.ts @@ -0,0 +1,13 @@ +import * as datasourceGitHubRelease from '../../datasource/github-releases'; +import { logger } from '../../logger'; +import { PackageDependency, PackageFile } from '../common'; + +export function extractPackageFile(content: string): PackageFile { + logger.trace('terraform-version.extractPackageFile()'); + const dep: PackageDependency = { + depName: 'hashicorp/terraform', + currentValue: content.trim(), + datasource: datasourceGitHubRelease.id, + }; + return { deps: [dep] }; +} diff --git a/lib/manager/terraform-version/index.ts b/lib/manager/terraform-version/index.ts new file mode 100644 index 0000000000..9a55bdbd5c --- /dev/null +++ b/lib/manager/terraform-version/index.ts @@ -0,0 +1,9 @@ +import * as hashicorpVersioning from '../../versioning/hashicorp'; + +export { extractPackageFile } from './extract'; + +export const defaultConfig = { + fileMatch: ['(^|/)\\.terraform-version$'], + versioning: hashicorpVersioning.id, + extractVersion: '^v(?<version>.*)$', +}; diff --git a/lib/manager/terraform-version/readme.md b/lib/manager/terraform-version/readme.md new file mode 100644 index 0000000000..f803cd62aa --- /dev/null +++ b/lib/manager/terraform-version/readme.md @@ -0,0 +1 @@ +This will maintain `.terraform-version` files. Available versions will be determined from the official Terraform downloads page. -- GitLab