Skip to content
Snippets Groups Projects
Unverified Commit ca0cf2e6 authored by Sebastian Poxhofer's avatar Sebastian Poxhofer Committed by GitHub
Browse files

fix(terraform): do not abort search after first block (#9302)

parent 39c3affd
No related branches found
No related tags found
No related merge requests found
...@@ -79,6 +79,30 @@ module "vote_service_sg" { ...@@ -79,6 +79,30 @@ module "vote_service_sg" {
] ]
} }
module "addons_aws" {
providers = {
helm = helm.core
kubectl = kubectl.core
kubernetes = kubernetes.core
}
cluster-name = data.aws_eks_cluster.core_cluster.id
aws-ebs-csi-driver = {
enabled = true
is_default_class = true
}
source = "particuleio/addons/kubernetes//modules/aws"
version = "1.28.3"
aws-load-balancer-controller = {
enabled = true
}
}
module "consul" { module "consul" {
source = "app.terraform.io/example-corp/k8s-cluster/azurerm" source = "app.terraform.io/example-corp/k8s-cluster/azurerm"
version = "~> 1.1.0" version = "~> 1.1.0"
......
...@@ -137,6 +137,12 @@ Object { ...@@ -137,6 +137,12 @@ Object {
"depName": "terraform-aws-modules/security-group/aws", "depName": "terraform-aws-modules/security-group/aws",
"depType": "terraform", "depType": "terraform",
}, },
Object {
"currentValue": "1.28.3",
"datasource": "terraform-module",
"depName": "particuleio/addons/kubernetes",
"depType": "terraform",
},
Object { Object {
"currentValue": "~> 1.1.0", "currentValue": "~> 1.1.0",
"datasource": "terraform-module", "datasource": "terraform-module",
...@@ -264,7 +270,7 @@ Object { ...@@ -264,7 +270,7 @@ Object {
"datasource": "github-tags", "datasource": "github-tags",
"depName": "hashicorp/terraform", "depName": "hashicorp/terraform",
"extractVersion": "v(?<version>.*)$", "extractVersion": "v(?<version>.*)$",
"lineNumber": 205, "lineNumber": 229,
}, },
Object { Object {
"currentValue": "2.7.2", "currentValue": "2.7.2",
......
...@@ -16,7 +16,7 @@ describe('lib/manager/terraform/extract', () => { ...@@ -16,7 +16,7 @@ describe('lib/manager/terraform/extract', () => {
it('extracts', () => { it('extracts', () => {
const res = extractPackageFile(tf1); const res = extractPackageFile(tf1);
expect(res).toMatchSnapshot(); expect(res).toMatchSnapshot();
expect(res.deps).toHaveLength(45); expect(res.deps).toHaveLength(46);
expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(8); expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(8);
}); });
it('returns null if only local deps', () => { it('returns null if only local deps', () => {
......
import is from '@sindresorhus/is'; import is from '@sindresorhus/is';
import * as datasourceTerraformProvider from '../../datasource/terraform-provider'; import * as datasourceTerraformProvider from '../../datasource/terraform-provider';
import { logger } from '../../logger';
import { SkipReason } from '../../types'; import { SkipReason } from '../../types';
import type { PackageDependency } from '../types'; import type { PackageDependency } from '../types';
import { import {
...@@ -16,7 +17,6 @@ export function extractTerraformProvider( ...@@ -16,7 +17,6 @@ export function extractTerraformProvider(
moduleName: string moduleName: string
): ExtractionResult { ): ExtractionResult {
let lineNumber = startingLine; let lineNumber = startingLine;
let line: string;
const deps: PackageDependency[] = []; const deps: PackageDependency[] = [];
const dep: PackageDependency = { const dep: PackageDependency = {
managerData: { managerData: {
...@@ -24,9 +24,19 @@ export function extractTerraformProvider( ...@@ -24,9 +24,19 @@ export function extractTerraformProvider(
terraformDependencyType: TerraformDependencyTypes.provider, terraformDependencyType: TerraformDependencyTypes.provider,
}, },
}; };
let braceCounter = 0;
do { do {
lineNumber += 1; // istanbul ignore if
line = lines[lineNumber]; if (lineNumber > lines.length - 1) {
logger.debug(`Malformed Terraform file detected.`);
}
const line = lines[lineNumber];
// `{` will be counted wit +1 and `}` with -1. Therefore if we reach braceCounter == 0. We have found the end of the terraform block
const openBrackets = (line.match(/\{/g) || []).length;
const closedBrackets = (line.match(/\}/g) || []).length;
braceCounter = braceCounter + openBrackets - closedBrackets;
const kvMatch = keyValueExtractionRegex.exec(line); const kvMatch = keyValueExtractionRegex.exec(line);
if (kvMatch) { if (kvMatch) {
if (kvMatch.groups.key === 'version') { if (kvMatch.groups.key === 'version') {
...@@ -36,8 +46,12 @@ export function extractTerraformProvider( ...@@ -36,8 +46,12 @@ export function extractTerraformProvider(
dep.managerData.sourceLine = lineNumber; dep.managerData.sourceLine = lineNumber;
} }
} }
} while (line.trim() !== '}'); lineNumber += 1;
} while (braceCounter !== 0);
deps.push(dep); deps.push(dep);
// remove last lineNumber addition to not skip a line after the last bracket
lineNumber -= 1;
return { lineNumber, dependencies: deps }; return { lineNumber, dependencies: deps };
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment