Skip to content

Commit 778ca4f

Browse files
committed
Change the type of branch protection blocks from array to object
As you can only have one block of the different objects in branch protections it does not make sense to have type list here. this is a breaking change
1 parent 487cbaa commit 778ca4f

File tree

3 files changed

+28
-29
lines changed

3 files changed

+28
-29
lines changed

examples/public-repository-complete-example/main.tf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,23 @@ module "repository" {
7676
enforce_admins = true
7777
require_signed_commits = true
7878

79-
required_status_checks = [{
79+
required_status_checks = {
8080
strict = true
8181
contexts = ["ci/travis"]
82-
}]
82+
}
8383

84-
required_pull_request_reviews = [{
84+
required_pull_request_reviews = {
8585
dismiss_stale_reviews = true
8686
dismissal_users = ["terraform-test-user-1"]
8787
dismissal_teams = [github_team.team.slug]
8888
require_code_owner_reviews = true
8989
required_approving_review_count = 1
90-
}]
90+
}
9191

92-
restrictions = [{
92+
restrictions = {
9393
users = ["terraform-test-user"]
9494
teams = ["team-1"]
95-
}]
95+
}
9696
}
9797
]
9898

main.tf

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,47 +16,46 @@ locals {
1616
topics = concat(local.standard_topics, var.extra_topics)
1717
}
1818

19-
2019
locals {
2120
branch_protection_rules = [
2221
for b in var.branch_protection_rules : merge({
2322
branch = null
2423
enforce_admins = null
2524
require_signed_commits = null
26-
required_status_checks = []
27-
required_pull_request_reviews = []
28-
restrictions = []
25+
required_status_checks = {}
26+
required_pull_request_reviews = {}
27+
restrictions = {}
2928
}, b)
3029
]
3130

3231
required_status_checks = [
33-
for b in local.branch_protection_rules : [
34-
for r in b.required_status_checks : merge({
32+
for b in local.branch_protection_rules :
33+
length(keys(b.required_status_checks)) > 0 ? [
34+
merge({
3535
strict = null
3636
contexts = []
37-
}, r)
38-
]
37+
}, b.required_status_checks)] : []
3938
]
4039

4140
required_pull_request_reviews = [
42-
for b in local.branch_protection_rules : [
43-
for r in b.required_pull_request_reviews : merge({
41+
for b in local.branch_protection_rules :
42+
length(keys(b.required_pull_request_reviews)) > 0 ? [
43+
merge({
4444
dismiss_stale_reviews = true
4545
dismissal_users = []
4646
dismissal_teams = []
4747
require_code_owner_reviews = null
4848
required_approving_review_count = null
49-
}, r)
50-
]
49+
}, b.required_pull_request_reviews)] : []
5150
]
5251

5352
restrictions = [
54-
for b in local.branch_protection_rules : [
55-
for r in b.restrictions : merge({
53+
for b in local.branch_protection_rules :
54+
length(keys(b.restrictions)) > 0 ? [
55+
merge({
5656
users = []
5757
teams = []
58-
}, r)
59-
]
58+
}, b.restrictions)] : []
6059
]
6160
}
6261

variables.tf

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ variable "pull_team_ids" {
166166
}
167167

168168
variable "branch_protection_rules" {
169-
type = list(any)
169+
type = any
170170

171171
# We can't use a detailed type specification due to a terraform limitation. However, this might be changed in a future
172172
# Terraform version. See https://github.com/hashicorp/terraform/issues/19898 and https://github.com/hashicorp/terraform/issues/22449
@@ -202,23 +202,23 @@ variable "branch_protection_rules" {
202202
# enforce_admins = true
203203
# require_signed_commits = true
204204
#
205-
# required_status_checks = [{
205+
# required_status_checks = {
206206
# strict = false
207207
# contexts = ["ci/travis"]
208-
# }]
208+
# }
209209
#
210-
# required_pull_request_reviews = [{
210+
# required_pull_request_reviews = {
211211
# dismiss_stale_reviews = true
212212
# dismissal_users = ["user1", "user2"]
213213
# dismissal_teams = ["team-slug-1", "team-slug-2"]
214214
# require_code_owner_reviews = true
215215
# required_approving_review_count = 1
216-
# }]
216+
# }
217217
#
218-
# restrictions = [{
218+
# restrictions = {
219219
# users = ["user1"]
220220
# teams = ["team-slug-1"]
221-
# }]
221+
# }
222222
# }
223223
# ]
224224
}

0 commit comments

Comments
 (0)