From d6ed59c57d11ec143abab0e1a4ad21a48a412721 Mon Sep 17 00:00:00 2001 From: Brooks Collins <brkscllns@gmail.com> Date: Sat, 30 May 2020 04:34:52 -0500 Subject: [PATCH] feat(terraform): fix http and add ssh support (#6377) --- lib/manager/terraform/__fixtures__/1.tf | 10 +++++++++- .../__snapshots__/extract.spec.ts.snap | 18 +++++++++++++++++- lib/manager/terraform/extract.spec.ts | 2 +- lib/manager/terraform/extract.ts | 3 +-- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/manager/terraform/__fixtures__/1.tf b/lib/manager/terraform/__fixtures__/1.tf index 0b7561aace..793474273f 100644 --- a/lib/manager/terraform/__fixtures__/1.tf +++ b/lib/manager/terraform/__fixtures__/1.tf @@ -149,5 +149,13 @@ module "gittags_badversion" { } module "gittags_subdir" { - source = "git::https://bitbucket.com/hashicorp/example//subdir/test?ref=v1.0.0" + source = "git::https://bitbucket.com/hashicorp/example//subdir/test?ref=v1.0.1" +} + +module "gittags_http" { + source = "git::http://bitbucket.com/hashicorp/example?ref=v1.0.2" +} + +module "gittags_ssh" { + source = "git::ssh://git@bitbucket.com/hashicorp/example?ref=v1.0.3" } diff --git a/lib/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/manager/terraform/__snapshots__/extract.spec.ts.snap index 97a20c53e2..7fd0c2231c 100644 --- a/lib/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -169,13 +169,29 @@ Object { "skipReason": "unsupported-version", }, Object { - "currentValue": "v1.0.0", + "currentValue": "v1.0.1", "datasource": "git-tags", "depName": "bitbucket.com/hashicorp/example", "depNameShort": "hashicorp/example", "depType": "gitTags", "lookupName": "https://bitbucket.com/hashicorp/example", }, + Object { + "currentValue": "v1.0.2", + "datasource": "git-tags", + "depName": "bitbucket.com/hashicorp/example", + "depNameShort": "hashicorp/example", + "depType": "gitTags", + "lookupName": "http://bitbucket.com/hashicorp/example", + }, + Object { + "currentValue": "v1.0.3", + "datasource": "git-tags", + "depName": "bitbucket.com/hashicorp/example", + "depNameShort": "hashicorp/example", + "depType": "gitTags", + "lookupName": "ssh://git@bitbucket.com/hashicorp/example", + }, ], } `; diff --git a/lib/manager/terraform/extract.spec.ts b/lib/manager/terraform/extract.spec.ts index 6ffae997d8..5e833e462e 100644 --- a/lib/manager/terraform/extract.spec.ts +++ b/lib/manager/terraform/extract.spec.ts @@ -19,7 +19,7 @@ describe('lib/manager/terraform/extract', () => { it('extracts', () => { const res = extractPackageFile(tf1); expect(res).toMatchSnapshot(); - expect(res.deps).toHaveLength(25); + expect(res.deps).toHaveLength(27); expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(6); }); it('returns null if only local deps', () => { diff --git a/lib/manager/terraform/extract.ts b/lib/manager/terraform/extract.ts index 1fd99e81ff..1419501ef2 100644 --- a/lib/manager/terraform/extract.ts +++ b/lib/manager/terraform/extract.ts @@ -88,8 +88,7 @@ export function extractPackageFile(content: string): PackageFile | null { const githubRefMatch = /github.com(\/|:)([^/]+\/[a-z0-9-.]+).*\?ref=(.*)$/.exec( dep.managerData.source ); - // Regex would need to be updated to support ssh:// - const gitTagsRefMatch = /git::(http|https:\/\/(.*.*\/(.*\/.*)))(?:|\/\/.*)\?ref=(.*)$/.exec( + const gitTagsRefMatch = /git::((?:http|https|ssh):\/\/(?:.*@)?(.*.*\/(.*\/.*)))\?ref=(.*)$/.exec( dep.managerData.source ); /* eslint-disable no-param-reassign */ -- GitLab