@@ -17,9 +17,9 @@ const (
17
17
)
18
18
19
19
// 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 ,
23
23
}
24
24
25
25
// optionsFromDataModel converts a CachedImageResourceModel into a corresponding set of
@@ -33,113 +33,114 @@ func optionsFromDataModel(data CachedImageResourceModel) (eboptions.Options, dia
33
33
opts .GitURL = data .GitURL .ValueString ()
34
34
35
35
// 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 )
38
39
39
40
if ! data .BaseImageCacheDir .IsNull () {
40
- overrides ["ENVBUILDER_BASE_IMAGE_CACHE_DIR" ] = struct {}{}
41
+ providerOpts ["ENVBUILDER_BASE_IMAGE_CACHE_DIR" ] = true
41
42
opts .BaseImageCacheDir = data .BaseImageCacheDir .ValueString ()
42
43
}
43
44
44
45
if ! data .BuildContextPath .IsNull () {
45
- overrides ["ENVBUILDER_BUILD_CONTEXT_PATH" ] = struct {}{}
46
+ providerOpts ["ENVBUILDER_BUILD_CONTEXT_PATH" ] = true
46
47
opts .BuildContextPath = data .BuildContextPath .ValueString ()
47
48
}
48
49
49
50
if ! data .CacheTTLDays .IsNull () {
50
- overrides ["ENVBUILDER_CACHE_TTL_DAYS" ] = struct {}{}
51
+ providerOpts ["ENVBUILDER_CACHE_TTL_DAYS" ] = true
51
52
opts .CacheTTLDays = data .CacheTTLDays .ValueInt64 ()
52
53
}
53
54
54
55
if ! data .DevcontainerDir .IsNull () {
55
- overrides ["ENVBUILDER_DEVCONTAINER_DIR" ] = struct {}{}
56
+ providerOpts ["ENVBUILDER_DEVCONTAINER_DIR" ] = true
56
57
opts .DevcontainerDir = data .DevcontainerDir .ValueString ()
57
58
}
58
59
59
60
if ! data .DevcontainerJSONPath .IsNull () {
60
- overrides ["ENVBUILDER_DEVCONTAINER_JSON_PATH" ] = struct {}{}
61
+ providerOpts ["ENVBUILDER_DEVCONTAINER_JSON_PATH" ] = true
61
62
opts .DevcontainerJSONPath = data .DevcontainerJSONPath .ValueString ()
62
63
}
63
64
64
65
if ! data .DockerfilePath .IsNull () {
65
- overrides ["ENVBUILDER_DOCKERFILE_PATH" ] = struct {}{}
66
+ providerOpts ["ENVBUILDER_DOCKERFILE_PATH" ] = true
66
67
opts .DockerfilePath = data .DockerfilePath .ValueString ()
67
68
}
68
69
69
70
if ! data .DockerConfigBase64 .IsNull () {
70
- overrides ["ENVBUILDER_DOCKER_CONFIG_BASE64" ] = struct {}{}
71
+ providerOpts ["ENVBUILDER_DOCKER_CONFIG_BASE64" ] = true
71
72
opts .DockerConfigBase64 = data .DockerConfigBase64 .ValueString ()
72
73
}
73
74
74
75
if ! data .ExitOnBuildFailure .IsNull () {
75
- overrides ["ENVBUILDER_EXIT_ON_BUILD_FAILURE" ] = struct {}{}
76
+ providerOpts ["ENVBUILDER_EXIT_ON_BUILD_FAILURE" ] = true
76
77
opts .ExitOnBuildFailure = data .ExitOnBuildFailure .ValueBool ()
77
78
}
78
79
79
80
if ! data .FallbackImage .IsNull () {
80
- overrides ["ENVBUILDER_FALLBACK_IMAGE" ] = struct {}{}
81
+ providerOpts ["ENVBUILDER_FALLBACK_IMAGE" ] = true
81
82
opts .FallbackImage = data .FallbackImage .ValueString ()
82
83
}
83
84
84
85
if ! data .GitCloneDepth .IsNull () {
85
- overrides ["ENVBUILDER_GIT_CLONE_DEPTH" ] = struct {}{}
86
+ providerOpts ["ENVBUILDER_GIT_CLONE_DEPTH" ] = true
86
87
opts .GitCloneDepth = data .GitCloneDepth .ValueInt64 ()
87
88
}
88
89
89
90
if ! data .GitCloneSingleBranch .IsNull () {
90
- overrides ["ENVBUILDER_GIT_CLONE_SINGLE_BRANCH" ] = struct {}{}
91
+ providerOpts ["ENVBUILDER_GIT_CLONE_SINGLE_BRANCH" ] = true
91
92
opts .GitCloneSingleBranch = data .GitCloneSingleBranch .ValueBool ()
92
93
}
93
94
94
95
if ! data .GitHTTPProxyURL .IsNull () {
95
- overrides ["ENVBUILDER_GIT_HTTP_PROXY_URL" ] = struct {}{}
96
+ providerOpts ["ENVBUILDER_GIT_HTTP_PROXY_URL" ] = true
96
97
opts .GitHTTPProxyURL = data .GitHTTPProxyURL .ValueString ()
97
98
}
98
99
99
100
if ! data .GitSSHPrivateKeyPath .IsNull () {
100
- overrides ["ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" ] = struct {}{}
101
+ providerOpts ["ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" ] = true
101
102
opts .GitSSHPrivateKeyPath = data .GitSSHPrivateKeyPath .ValueString ()
102
103
}
103
104
104
105
if ! data .GitUsername .IsNull () {
105
- overrides ["ENVBUILDER_GIT_USERNAME" ] = struct {}{}
106
+ providerOpts ["ENVBUILDER_GIT_USERNAME" ] = true
106
107
opts .GitUsername = data .GitUsername .ValueString ()
107
108
}
108
109
109
110
if ! data .GitPassword .IsNull () {
110
- overrides ["ENVBUILDER_GIT_PASSWORD" ] = struct {}{}
111
+ providerOpts ["ENVBUILDER_GIT_PASSWORD" ] = true
111
112
opts .GitPassword = data .GitPassword .ValueString ()
112
113
}
113
114
114
115
if ! data .IgnorePaths .IsNull () {
115
- overrides ["ENVBUILDER_IGNORE_PATHS" ] = struct {}{}
116
+ providerOpts ["ENVBUILDER_IGNORE_PATHS" ] = true
116
117
opts .IgnorePaths = tfutil .TFListToStringSlice (data .IgnorePaths )
117
118
}
118
119
119
120
if ! data .Insecure .IsNull () {
120
- overrides ["ENVBUILDER_INSECURE" ] = struct {}{}
121
+ providerOpts ["ENVBUILDER_INSECURE" ] = true
121
122
opts .Insecure = data .Insecure .ValueBool ()
122
123
}
123
124
124
125
if data .RemoteRepoBuildMode .IsNull () {
125
126
opts .RemoteRepoBuildMode = true
126
127
} else {
127
- overrides ["ENVBUILDER_REMOTE_REPO_BUILD_MODE" ] = struct {}{}
128
+ providerOpts ["ENVBUILDER_REMOTE_REPO_BUILD_MODE" ] = true
128
129
opts .RemoteRepoBuildMode = data .RemoteRepoBuildMode .ValueBool ()
129
130
}
130
131
131
132
if ! data .SSLCertBase64 .IsNull () {
132
- overrides ["ENVBUILDER_SSL_CERT_BASE64" ] = struct {}{}
133
+ providerOpts ["ENVBUILDER_SSL_CERT_BASE64" ] = true
133
134
opts .SSLCertBase64 = data .SSLCertBase64 .ValueString ()
134
135
}
135
136
136
137
if ! data .Verbose .IsNull () {
137
- overrides ["ENVBUILDER_VERBOSE" ] = struct {}{}
138
+ providerOpts ["ENVBUILDER_VERBOSE" ] = true
138
139
opts .Verbose = data .Verbose .ValueBool ()
139
140
}
140
141
141
142
if ! data .WorkspaceFolder .IsNull () {
142
- overrides ["ENVBUILDER_WORKSPACE_FOLDER" ] = struct {}{}
143
+ providerOpts ["ENVBUILDER_WORKSPACE_FOLDER" ] = true
143
144
opts .WorkspaceFolder = data .WorkspaceFolder .ValueString ()
144
145
}
145
146
@@ -148,15 +149,15 @@ func optionsFromDataModel(data CachedImageResourceModel) (eboptions.Options, dia
148
149
for k , v := range data .ExtraEnv .Elements () {
149
150
extraEnv [k ] = tfutil .TFValueToString (v )
150
151
}
151
- diags = append (diags , overrideOptionsFromExtraEnv (& opts , extraEnv , overrides )... )
152
+ diags = append (diags , overrideOptionsFromExtraEnv (& opts , extraEnv , providerOpts )... )
152
153
153
154
return opts , diags
154
155
}
155
156
156
157
// overrideOptionsFromExtraEnv overrides the options in opts with values from extraEnv.
157
158
// It returns any diagnostics encountered.
158
159
// 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 {
160
161
var diags diag.Diagnostics
161
162
// Make a map of the options for easy lookup.
162
163
optsMap := make (map [string ]pflag.Value )
@@ -170,7 +171,7 @@ func overrideOptionsFromExtraEnv(opts *eboptions.Options, extraEnv map[string]st
170
171
continue
171
172
}
172
173
173
- if _ , found := nonOverrideOptions [key ]; found {
174
+ if nonOverrideOptions [key ] {
174
175
diags .AddAttributeWarning (path .Root ("extra_env" ),
175
176
"Cannot override required environment variable" ,
176
177
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
179
180
}
180
181
181
182
// 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 ] {
183
184
diags .AddAttributeWarning (path .Root ("extra_env" ),
184
185
"Overriding provider environment variable" ,
185
186
fmt .Sprintf ("The key %q in extra_env overrides an option set on the provider." , key ),
0 commit comments