@@ -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 )
0 commit comments