Skip to content

Commit 67ac028

Browse files
authored
Merge pull request #19 from mineiros-io/mariux/new-branch-protection-syntax
Change the type of branch protection blocks from array to object
2 parents 487cbaa + 778ca4f commit 67ac028

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)