Skip to content

Commit fe1872a

Browse files
committed
WIP
1 parent ec69cce commit fe1872a

File tree

3 files changed

+42
-10
lines changed

3 files changed

+42
-10
lines changed

provisioner/terraform/parse.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ func (s *server) loadWorkspaceTags(ctx context.Context, module *tfconfig.Module)
7878
var file *hcl.File
7979
var diags hcl.Diagnostics
8080
parser := hclparse.NewParser()
81-
if strings.HasSuffix(dataResource.Pos.Filename, ".tf") {
82-
file, diags = parser.ParseHCLFile(dataResource.Pos.Filename)
83-
} else {
81+
82+
if !strings.HasSuffix(dataResource.Pos.Filename, ".tf") {
8483
s.logger.Debug(ctx, "only .tf files can be parsed", "filename", dataResource.Pos.Filename)
8584
continue
8685
}
86+
file, diags = parser.ParseHCLFile(dataResource.Pos.Filename)
8787

8888
if diags.HasErrors() {
8989
return nil, xerrors.Errorf("can't parse the resource file: %s", diags.Error())
@@ -122,6 +122,10 @@ func (s *server) loadWorkspaceTags(ctx context.Context, module *tfconfig.Module)
122122
}
123123

124124
s.logger.Info(ctx, "workspace tag found", "key", key, "value", value)
125+
126+
if _, ok := workspaceTags[key]; ok {
127+
return nil, xerrors.Errorf(`workspace tag "%s" is defined multiple times`, key)
128+
}
125129
workspaceTags[key] = value
126130
}
127131
}

provisionerd/runner/runner.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
517517
Stage: "Parsing template parameters",
518518
CreatedAt: time.Now().UnixMilli(),
519519
})
520-
templateVariables, readme, err := r.runTemplateImportParse(ctx)
520+
_, templateVariables, readme, err := r.runTemplateImportParse(ctx) // TODO workspace_tags
521521
if err != nil {
522522
return nil, r.failedJobf("run parse: %s", err)
523523
}
@@ -586,19 +586,19 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
586586

587587
// Parses template variables and README from source.
588588
func (r *Runner) runTemplateImportParse(ctx context.Context) (
589-
vars []*sdkproto.TemplateVariable, readme []byte, err error,
589+
workspaceTags map[string]string, vars []*sdkproto.TemplateVariable, readme []byte, err error,
590590
) {
591591
ctx, span := r.startTrace(ctx, tracing.FuncName())
592592
defer span.End()
593593

594594
err = r.session.Send(&sdkproto.Request{Type: &sdkproto.Request_Parse{Parse: &sdkproto.ParseRequest{}}})
595595
if err != nil {
596-
return nil, nil, xerrors.Errorf("parse source: %w", err)
596+
return nil, nil, nil, xerrors.Errorf("parse source: %w", err)
597597
}
598598
for {
599599
msg, err := r.session.Recv()
600600
if err != nil {
601-
return nil, nil, xerrors.Errorf("recv parse source: %w", err)
601+
return nil, nil, nil, xerrors.Errorf("recv parse source: %w", err)
602602
}
603603
switch msgType := msg.Type.(type) {
604604
case *sdkproto.Response_Log:
@@ -617,17 +617,18 @@ func (r *Runner) runTemplateImportParse(ctx context.Context) (
617617
case *sdkproto.Response_Parse:
618618
pc := msgType.Parse
619619
r.logger.Debug(context.Background(), "parse complete",
620+
slog.F("workspace_tags", pc.WorkspaceTags),
620621
slog.F("template_variables", pc.TemplateVariables),
621622
slog.F("readme_len", len(pc.Readme)),
622623
slog.F("error", pc.Error),
623624
)
624625
if pc.Error != "" {
625-
return nil, nil, xerrors.Errorf("parse error: %s", pc.Error)
626+
return nil, nil, nil, xerrors.Errorf("parse error: %s", pc.Error)
626627
}
627628

628-
return msgType.Parse.TemplateVariables, msgType.Parse.Readme, nil
629+
return msgType.Parse.WorkspaceTags, msgType.Parse.TemplateVariables, msgType.Parse.Readme, nil
629630
default:
630-
return nil, nil, xerrors.Errorf("invalid message type %q received from provisioner",
631+
return nil, nil, nil, xerrors.Errorf("invalid message type %q received from provisioner",
631632
reflect.TypeOf(msg.Type).String())
632633
}
633634
}

site/e2e/provisionerGenerated.ts

+27
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)