@@ -172,11 +172,11 @@ func (p *Parser) WorkspaceTagDefaults(ctx context.Context) (map[string]string, e
172
172
173
173
// To evaluate the expressions, we need to load the default values for
174
174
// variables and parameters.
175
- varsDefaults ,err := p .VariableDefaults (ctx )
175
+ varsDefaults ,err := p .VariableDefaults (ctx , tags )
176
176
if err != nil {
177
177
return nil ,xerrors .Errorf ("load variable defaults: %w" ,err )
178
178
}
179
- paramsDefaults ,err := p .CoderParameterDefaults (ctx ,varsDefaults )
179
+ paramsDefaults ,err := p .CoderParameterDefaults (ctx ,varsDefaults , tags )
180
180
if err != nil {
181
181
return nil ,xerrors .Errorf ("load parameter defaults: %w" ,err )
182
182
}
@@ -251,28 +251,39 @@ func WriteArchive(bs []byte, mimetype string, path string) error {
251
251
return nil
252
252
}
253
253
254
- // VariableDefaults returns the default values for all variables passed to it.
255
- func (p * Parser )VariableDefaults (ctx context.Context ) (map [string ]string ,error ) {
254
+ // VariableDefaults returns the default values for all variables referenced in the values of tags.
255
+ func (p * Parser )VariableDefaults (ctx context.Context ,tags map [string ]string ) (map [string ]string ,error ) {
256
+ var skipped []string
256
257
// iterate through vars to get the default values for all
257
- // variables.
258
+ //required variables.
258
259
m := make (map [string ]string )
259
260
for _ ,v := range p .module .Variables {
260
261
if v == nil {
261
262
continue
262
263
}
264
+ var found bool
265
+ for _ ,tv := range tags {
266
+ if strings .Contains (tv ,v .Name ) {
267
+ found = true
268
+ }
269
+ }
270
+ if ! found {
271
+ skipped = append (skipped ,v .Name )
272
+ continue
273
+ }
263
274
sv ,err := interfaceToString (v .Default )
264
275
if err != nil {
265
276
return nil ,xerrors .Errorf ("can't convert variable default value to string: %v" ,err )
266
277
}
267
278
m [v .Name ]= strings .Trim (sv ,`"` )
268
279
}
269
- p .logger .Debug (ctx ,"found default values for variables" ,slog .F ("defaults" ,m ))
280
+ p .logger .Debug (ctx ,"found default values for variables" ,slog .F ("defaults" ,m ), slog . F ( "skipped" , skipped ) )
270
281
return m ,nil
271
282
}
272
283
273
284
// CoderParameterDefaults returns the default values of all coder_parameter data sources
274
285
// in the parsed module.
275
- func (p * Parser )CoderParameterDefaults (ctx context.Context ,varsDefaults map [string ]string ) (map [string ]string ,error ) {
286
+ func (p * Parser )CoderParameterDefaults (ctx context.Context ,varsDefaults map [string ]string , tags map [ string ] string ) (map [string ]string ,error ) {
276
287
defaultsM := make (map [string ]string )
277
288
var (
278
289
skipped []string
@@ -294,6 +305,17 @@ func (p *Parser) CoderParameterDefaults(ctx context.Context, varsDefaults map[st
294
305
continue
295
306
}
296
307
308
+ var found bool
309
+ for _ ,tv := range tags {
310
+ if strings .Contains (tv ,dataResource .Name ) {
311
+ found = true
312
+ }
313
+ }
314
+ if ! found {
315
+ skipped = append (skipped ,dataResource .Name )
316
+ continue
317
+ }
318
+
297
319
// We know in which HCL file is the data resource defined.
298
320
// NOTE: hclparse.Parser will cache multiple successive calls to parse the same file.
299
321
file ,diags = p .underlying .ParseHCLFile (dataResource .Pos .Filename )