Skip to content

Commit c3c62c0

Browse files
committed
fix: Recursively update version in Terraform submodule READMEs.
1 parent 3b8e9b3 commit c3c62c0

6 files changed

Lines changed: 59 additions & 17 deletions

File tree

__snapshots__/terraform-module.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ filename: CHANGELOG.md
1111
* **deps:** update dependency com.google.cloud:google-cloud-spanner to v1.50.0 ([1f9663c](https://www.github.com/googleapis/terraform-test-repo/commit/1f9663cf08ab1cf3b68d95dee4dc99b7c4aac373))
1212
* **deps:** update dependency com.google.cloud:google-cloud-storage to v1.120.0 ([fcd1c89](https://www.github.com/googleapis/terraform-test-repo/commit/fcd1c890dc1526f4d62ceedad561f498195c8939))
1313
14-
filename: README.md
14+
filename: readme.md
1515
# Terraform Module
1616
1717
## Usage
@@ -83,6 +83,30 @@ module "vpc" {
8383
}
8484
\`\`\`
8585
86+
filename: module-submodule/modules/sub-module-with-version/readme.md
87+
# Terraform Module
88+
89+
## Usage
90+
91+
\`\`\`hcl
92+
module "vpc" {
93+
source = "terraform-google-modules/mine/google"
94+
version = "~> 2.1"
95+
}
96+
\`\`\`
97+
98+
filename: module-submodule/modules/sub-module-missing-versions/README.md
99+
# Terraform Module
100+
101+
## Usage
102+
103+
\`\`\`hcl
104+
module "vpc" {
105+
source = "terraform-google-modules/mine/google"
106+
version = "~> 2.1"
107+
}
108+
\`\`\`
109+
86110
filename: versions.tf
87111
/**
88112
* Copyright 2020 Google LLC
@@ -164,7 +188,7 @@ filename: CHANGELOG.md
164188
* **deps:** update dependency com.google.cloud:google-cloud-spanner to v1.50.0 ([1f9663c](https://www.github.com/googleapis/terraform-test-repo/commit/1f9663cf08ab1cf3b68d95dee4dc99b7c4aac373))
165189
* **deps:** update dependency com.google.cloud:google-cloud-storage to v1.120.0 ([fcd1c89](https://www.github.com/googleapis/terraform-test-repo/commit/fcd1c890dc1526f4d62ceedad561f498195c8939))
166190
167-
filename: README.md
191+
filename: module-no-versions/README.MD
168192
# Terraform Module
169193
170194
## Usage

src/releasers/terraform-module.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,20 @@ export class TerraformModule extends ReleasePR {
7878
})
7979
);
8080

81-
updates.push(
82-
new ReadMe({
83-
path: this.addPath('README.md'),
84-
changelogEntry,
85-
version: candidate.version,
86-
packageName: this.packageName,
87-
})
88-
);
81+
// Update version in README to current candidate version.
82+
// A module may have submodules, so find all submodules.
83+
const readmeFiles = await this.gh.findFilesByFilename('readme.md');
84+
readmeFiles.forEach(path => {
85+
updates.push(
86+
new ReadMe({
87+
path: this.addPath(path),
88+
changelogEntry,
89+
version: candidate.version,
90+
packageName: this.packageName,
91+
})
92+
);
93+
});
94+
8995
// Update versions.tf to current candidate version.
9096
// A module may have submodules, so find all versions.tf to update.
9197
const versionFiles = await this.gh.findFilesByFilename('versions.tf');

test/releasers/fixtures/terraform/module-submodule/modules/sub-module-with-version/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ terraform {
2222
}
2323

2424
provider_meta "google" {
25-
module_name = "foo/bar/submodule/v1.0.0"
25+
module_name = "foo/bar/submodule/v2.0.0"
2626
}
2727

2828
provider_meta "google-beta" {
29-
module_name = "foo/bar/submodule/v1.0.0"
29+
module_name = "foo/bar/submodule/v2.0.0"
3030
}
3131
}

test/releasers/fixtures/terraform/module-submodule/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ terraform {
2222
}
2323

2424
provider_meta "google" {
25-
module_name = "foo/bar/main/v1.0.0"
25+
module_name = "foo/bar/main/v2.0.0"
2626
}
2727

2828
provider_meta "google-beta" {
29-
module_name = "foo/bar/main/v1.0.0"
29+
module_name = "foo/bar/main/v2.0.0"
3030
}
3131
}

test/releasers/fixtures/terraform/simple-module/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ terraform {
2222
}
2323

2424
provider_meta "google" {
25-
module_name = "foo/bar/baz/v1.0.0"
25+
module_name = "foo/bar/baz/v2.0.0"
2626
}
2727

2828
provider_meta "google-beta" {
29-
module_name = "foo/bar/baz/v1.0.0"
29+
module_name = "foo/bar/baz/v2.0.0"
3030
}
3131
}

test/releasers/terraform-module.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe('terraform-module', () => {
3939
// simple-module with module versions defined
4040
name: 'simple-module',
4141
findVersionFiles: ['versions.tf'],
42+
findReadmeFiles: ['readme.md'],
4243
readFilePaths: ['simple-module/readme.md', 'simple-module/versions.tf'],
4344
},
4445
{
@@ -50,8 +51,15 @@ describe('terraform-module', () => {
5051
'versions.tf',
5152
'modules/sub-module-with-version/versions.tf',
5253
],
54+
findReadmeFiles: [
55+
'README.md',
56+
'module-submodule/modules/sub-module-with-version/readme.md',
57+
'module-submodule/modules/sub-module-missing-versions/README.md',
58+
],
5359
readFilePaths: [
54-
'module-submodule/readme.md',
60+
'module-submodule/README.md',
61+
'module-submodule/modules/sub-module-with-version/readme.md',
62+
'module-submodule/modules/sub-module-missing-versions/README.md',
5563
'module-submodule/versions.tf',
5664
'module-submodule/modules/sub-module-with-version/versions.tf',
5765
],
@@ -60,6 +68,7 @@ describe('terraform-module', () => {
6068
// module-no-versions with no module versions defined in versions.tf
6169
name: 'module-no-versions',
6270
findVersionFiles: [],
71+
findReadmeFiles: ['module-no-versions/README.MD'],
6372
readFilePaths: ['module-no-versions/readme.md'],
6473
},
6574
];
@@ -91,6 +100,9 @@ describe('terraform-module', () => {
91100
it(`creates a release PR for ${test.name}`, async () => {
92101
sandbox
93102
.stub(releasePR.gh, 'findFilesByFilename')
103+
.onFirstCall()
104+
.returns(Promise.resolve(test.findReadmeFiles))
105+
.onSecondCall()
94106
.returns(Promise.resolve(test.findVersionFiles));
95107

96108
// Return latest tag used to determine next version #:

0 commit comments

Comments
 (0)