Skip to content

Commit 2aedc4e

Browse files
committed
rename, convert to map[string]bool
1 parent 96cc214 commit 2aedc4e

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed

internal/provider/helpers.go

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ const (
1717
)
1818

1919
// nonOverrideOptions are options that cannot be overridden by extra_env.
20-
var nonOverrideOptions = map[string]struct{}{
21-
"ENVBUILDER_CACHE_REPO": {},
22-
"ENVBUILDER_GIT_URL": {},
20+
var nonOverrideOptions = map[string]bool{
21+
"ENVBUILDER_CACHE_REPO": true,
22+
"ENVBUILDER_GIT_URL": true,
2323
}
2424

2525
// optionsFromDataModel converts a CachedImageResourceModel into a corresponding set of
@@ -33,113 +33,114 @@ func optionsFromDataModel(data CachedImageResourceModel) (eboptions.Options, dia
3333
opts.GitURL = data.GitURL.ValueString()
3434

3535
// Other options can be overridden by extra_env, with a warning.
36-
// Keep track of which options are overridden.
37-
overrides := make(map[string]struct{})
36+
// Keep track of which options are set from the data model so we
37+
// can check if they are being overridden.
38+
providerOpts := make(map[string]bool)
3839

3940
if !data.BaseImageCacheDir.IsNull() {
40-
overrides["ENVBUILDER_BASE_IMAGE_CACHE_DIR"] = struct{}{}
41+
providerOpts["ENVBUILDER_BASE_IMAGE_CACHE_DIR"] = true
4142
opts.BaseImageCacheDir = data.BaseImageCacheDir.ValueString()
4243
}
4344

4445
if !data.BuildContextPath.IsNull() {
45-
overrides["ENVBUILDER_BUILD_CONTEXT_PATH"] = struct{}{}
46+
providerOpts["ENVBUILDER_BUILD_CONTEXT_PATH"] = true
4647
opts.BuildContextPath = data.BuildContextPath.ValueString()
4748
}
4849

4950
if !data.CacheTTLDays.IsNull() {
50-
overrides["ENVBUILDER_CACHE_TTL_DAYS"] = struct{}{}
51+
providerOpts["ENVBUILDER_CACHE_TTL_DAYS"] = true
5152
opts.CacheTTLDays = data.CacheTTLDays.ValueInt64()
5253
}
5354

5455
if !data.DevcontainerDir.IsNull() {
55-
overrides["ENVBUILDER_DEVCONTAINER_DIR"] = struct{}{}
56+
providerOpts["ENVBUILDER_DEVCONTAINER_DIR"] = true
5657
opts.DevcontainerDir = data.DevcontainerDir.ValueString()
5758
}
5859

5960
if !data.DevcontainerJSONPath.IsNull() {
60-
overrides["ENVBUILDER_DEVCONTAINER_JSON_PATH"] = struct{}{}
61+
providerOpts["ENVBUILDER_DEVCONTAINER_JSON_PATH"] = true
6162
opts.DevcontainerJSONPath = data.DevcontainerJSONPath.ValueString()
6263
}
6364

6465
if !data.DockerfilePath.IsNull() {
65-
overrides["ENVBUILDER_DOCKERFILE_PATH"] = struct{}{}
66+
providerOpts["ENVBUILDER_DOCKERFILE_PATH"] = true
6667
opts.DockerfilePath = data.DockerfilePath.ValueString()
6768
}
6869

6970
if !data.DockerConfigBase64.IsNull() {
70-
overrides["ENVBUILDER_DOCKER_CONFIG_BASE64"] = struct{}{}
71+
providerOpts["ENVBUILDER_DOCKER_CONFIG_BASE64"] = true
7172
opts.DockerConfigBase64 = data.DockerConfigBase64.ValueString()
7273
}
7374

7475
if !data.ExitOnBuildFailure.IsNull() {
75-
overrides["ENVBUILDER_EXIT_ON_BUILD_FAILURE"] = struct{}{}
76+
providerOpts["ENVBUILDER_EXIT_ON_BUILD_FAILURE"] = true
7677
opts.ExitOnBuildFailure = data.ExitOnBuildFailure.ValueBool()
7778
}
7879

7980
if !data.FallbackImage.IsNull() {
80-
overrides["ENVBUILDER_FALLBACK_IMAGE"] = struct{}{}
81+
providerOpts["ENVBUILDER_FALLBACK_IMAGE"] = true
8182
opts.FallbackImage = data.FallbackImage.ValueString()
8283
}
8384

8485
if !data.GitCloneDepth.IsNull() {
85-
overrides["ENVBUILDER_GIT_CLONE_DEPTH"] = struct{}{}
86+
providerOpts["ENVBUILDER_GIT_CLONE_DEPTH"] = true
8687
opts.GitCloneDepth = data.GitCloneDepth.ValueInt64()
8788
}
8889

8990
if !data.GitCloneSingleBranch.IsNull() {
90-
overrides["ENVBUILDER_GIT_CLONE_SINGLE_BRANCH"] = struct{}{}
91+
providerOpts["ENVBUILDER_GIT_CLONE_SINGLE_BRANCH"] = true
9192
opts.GitCloneSingleBranch = data.GitCloneSingleBranch.ValueBool()
9293
}
9394

9495
if !data.GitHTTPProxyURL.IsNull() {
95-
overrides["ENVBUILDER_GIT_HTTP_PROXY_URL"] = struct{}{}
96+
providerOpts["ENVBUILDER_GIT_HTTP_PROXY_URL"] = true
9697
opts.GitHTTPProxyURL = data.GitHTTPProxyURL.ValueString()
9798
}
9899

99100
if !data.GitSSHPrivateKeyPath.IsNull() {
100-
overrides["ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH"] = struct{}{}
101+
providerOpts["ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH"] = true
101102
opts.GitSSHPrivateKeyPath = data.GitSSHPrivateKeyPath.ValueString()
102103
}
103104

104105
if !data.GitUsername.IsNull() {
105-
overrides["ENVBUILDER_GIT_USERNAME"] = struct{}{}
106+
providerOpts["ENVBUILDER_GIT_USERNAME"] = true
106107
opts.GitUsername = data.GitUsername.ValueString()
107108
}
108109

109110
if !data.GitPassword.IsNull() {
110-
overrides["ENVBUILDER_GIT_PASSWORD"] = struct{}{}
111+
providerOpts["ENVBUILDER_GIT_PASSWORD"] = true
111112
opts.GitPassword = data.GitPassword.ValueString()
112113
}
113114

114115
if !data.IgnorePaths.IsNull() {
115-
overrides["ENVBUILDER_IGNORE_PATHS"] = struct{}{}
116+
providerOpts["ENVBUILDER_IGNORE_PATHS"] = true
116117
opts.IgnorePaths = tfutil.TFListToStringSlice(data.IgnorePaths)
117118
}
118119

119120
if !data.Insecure.IsNull() {
120-
overrides["ENVBUILDER_INSECURE"] = struct{}{}
121+
providerOpts["ENVBUILDER_INSECURE"] = true
121122
opts.Insecure = data.Insecure.ValueBool()
122123
}
123124

124125
if data.RemoteRepoBuildMode.IsNull() {
125126
opts.RemoteRepoBuildMode = true
126127
} else {
127-
overrides["ENVBUILDER_REMOTE_REPO_BUILD_MODE"] = struct{}{}
128+
providerOpts["ENVBUILDER_REMOTE_REPO_BUILD_MODE"] = true
128129
opts.RemoteRepoBuildMode = data.RemoteRepoBuildMode.ValueBool()
129130
}
130131

131132
if !data.SSLCertBase64.IsNull() {
132-
overrides["ENVBUILDER_SSL_CERT_BASE64"] = struct{}{}
133+
providerOpts["ENVBUILDER_SSL_CERT_BASE64"] = true
133134
opts.SSLCertBase64 = data.SSLCertBase64.ValueString()
134135
}
135136

136137
if !data.Verbose.IsNull() {
137-
overrides["ENVBUILDER_VERBOSE"] = struct{}{}
138+
providerOpts["ENVBUILDER_VERBOSE"] = true
138139
opts.Verbose = data.Verbose.ValueBool()
139140
}
140141

141142
if !data.WorkspaceFolder.IsNull() {
142-
overrides["ENVBUILDER_WORKSPACE_FOLDER"] = struct{}{}
143+
providerOpts["ENVBUILDER_WORKSPACE_FOLDER"] = true
143144
opts.WorkspaceFolder = data.WorkspaceFolder.ValueString()
144145
}
145146

@@ -148,15 +149,15 @@ func optionsFromDataModel(data CachedImageResourceModel) (eboptions.Options, dia
148149
for k, v := range data.ExtraEnv.Elements() {
149150
extraEnv[k] = tfutil.TFValueToString(v)
150151
}
151-
diags = append(diags, overrideOptionsFromExtraEnv(&opts, extraEnv, overrides)...)
152+
diags = append(diags, overrideOptionsFromExtraEnv(&opts, extraEnv, providerOpts)...)
152153

153154
return opts, diags
154155
}
155156

156157
// overrideOptionsFromExtraEnv overrides the options in opts with values from extraEnv.
157158
// It returns any diagnostics encountered.
158159
// It will not override certain options, such as ENVBUILDER_CACHE_REPO and ENVBUILDER_GIT_URL.
159-
func overrideOptionsFromExtraEnv(opts *eboptions.Options, extraEnv map[string]string, overrides map[string]struct{}) diag.Diagnostics {
160+
func overrideOptionsFromExtraEnv(opts *eboptions.Options, extraEnv map[string]string, providerOpts map[string]bool) diag.Diagnostics {
160161
var diags diag.Diagnostics
161162
// Make a map of the options for easy lookup.
162163
optsMap := make(map[string]pflag.Value)
@@ -170,7 +171,7 @@ func overrideOptionsFromExtraEnv(opts *eboptions.Options, extraEnv map[string]st
170171
continue
171172
}
172173

173-
if _, found := nonOverrideOptions[key]; found {
174+
if nonOverrideOptions[key] {
174175
diags.AddAttributeWarning(path.Root("extra_env"),
175176
"Cannot override required environment variable",
176177
fmt.Sprintf("The key %q in extra_env cannot be overridden.", key),
@@ -179,7 +180,7 @@ func overrideOptionsFromExtraEnv(opts *eboptions.Options, extraEnv map[string]st
179180
}
180181

181182
// Check if the option was set on the provider data model and generate a warning if so.
182-
if _, overridden := overrides[key]; overridden {
183+
if providerOpts[key] {
183184
diags.AddAttributeWarning(path.Root("extra_env"),
184185
"Overriding provider environment variable",
185186
fmt.Sprintf("The key %q in extra_env overrides an option set on the provider.", key),

0 commit comments

Comments
 (0)