Skip to content

Commit c89db13

Browse files
committed
refactor: repos config as local instead of processing inputs in resources
1 parent e015c4f commit c89db13

File tree

1 file changed

+43
-18
lines changed

1 file changed

+43
-18
lines changed

terraform/main.tf

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,65 @@
11
locals {
2-
config = yamldecode(file(var.path))
2+
config = yamldecode(file(var.path))
3+
4+
repositories = [
5+
for repository in try(local.config.repositories, []) : {
6+
# Metadata
7+
name = repository.name
8+
description = try(repository.description, null)
9+
homepage_url = try(repository.homepage_url, null)
10+
topics = try(repository.topics, null)
11+
# Properties
12+
visibility = try(repository.visibility, local.config.organization.all-repositories.visibility, null)
13+
is_template = try(repository.is_template, null)
14+
# Features
15+
has_issues = try(repository.has_issues, local.config.organization.all-repositories.has_issues, null)
16+
has_discussions = try(repository.has_discussions, local.config.organization.all-repositories.has_discussions, null)
17+
has_projects = try(repository.has_projects, local.config.organization.all-repositories.has_projects, null)
18+
has_wiki = try(repository.has_wiki, local.config.organization.all-repositories.has_wiki, null)
19+
# Settings
20+
allow_merge_commit = try(repository.allow_merge_commit, local.config.organization.all-repositories.allow_merge_commit, null)
21+
allow_squash_merge = try(repository.allow_squash_merge, local.config.organization.all-repositories.allow_squash_merge, null)
22+
allow_rebase_merge = try(repository.allow_rebase_merge, local.config.organization.all-repositories.allow_rebase_merge, null)
23+
allow_auto_merge = try(repository.allow_auto_merge, local.config.organization.all-repositories.allow_auto_merge, null)
24+
delete_branch_on_merge = try(repository.delete_branch_on_merge, local.config.organization.all-repositories.delete_branch_on_merge, null)
25+
}
26+
]
27+
328
all_repositories = try(local.config.organization.all-repositories, [])
4-
repositories = try(local.config.repositories, [])
29+
repositories0 = try(local.config.repositories, [])
530
all_repositories_rulesets = [
6-
for pair in try(setproduct(local.repositories, local.all_repositories.rulesets), []) : {
31+
for pair in try(setproduct(local.repositories0, local.all_repositories.rulesets), []) : {
732
repository = pair[0],
833
ruleset = pair[1]
934
}
1035
]
1136
}
1237

1338
resource "github_repository" "repo" {
14-
for_each = { for repo in local.repositories : repo.name => repo }
39+
for_each = { for repository in local.repositories : repository.name => repository }
1540

1641
# Metadata
1742
name = each.value.name
18-
description = try(each.value.description, null)
19-
homepage_url = try(each.value.homepage_url, null)
20-
topics = try(each.value.topics, null)
43+
description = each.value.description
44+
homepage_url = each.value.homepage_url
45+
topics = each.value.topics
2146

2247
# Properties
23-
visibility = try(each.value.visibility, local.all_repositories.visibility, null)
24-
is_template = try(each.value.is_template, null)
48+
visibility = each.value.visibility
49+
is_template = each.value.is_template
2550

2651
# Features
27-
has_issues = try(each.value.has_issues, local.all_repositories.has_issues, null)
28-
has_discussions = try(each.value.has_discussions, local.all_repositories.has_discussions, null)
29-
has_projects = try(each.value.has_projects, local.all_repositories.has_projects, null)
30-
has_wiki = try(each.value.has_wiki, local.all_repositories.has_wiki, null)
52+
has_issues = each.value.has_issues
53+
has_discussions = each.value.has_discussions
54+
has_projects = each.value.has_projects
55+
has_wiki = each.value.has_wiki
3156

3257
# Settings
33-
allow_merge_commit = try(each.value.allow_merge_commit, local.all_repositories.allow_merge_commit, null)
34-
allow_squash_merge = try(each.value.allow_squash_merge, local.all_repositories.allow_squash_merge, null)
35-
allow_rebase_merge = try(each.value.allow_rebase_merge, local.all_repositories.allow_rebase_merge, null)
36-
allow_auto_merge = try(each.value.allow_auto_merge, local.all_repositories.allow_auto_merge, null)
37-
delete_branch_on_merge = try(each.value.delete_branch_on_merge, local.all_repositories.delete_branch_on_merge, null)
58+
allow_merge_commit = each.value.allow_merge_commit
59+
allow_squash_merge = each.value.allow_squash_merge
60+
allow_rebase_merge = each.value.allow_rebase_merge
61+
allow_auto_merge = each.value.allow_auto_merge
62+
delete_branch_on_merge = each.value.delete_branch_on_merge
3863
}
3964

4065
resource "github_repository_ruleset" "all_repositories" {

0 commit comments

Comments
 (0)