Parses template variables and README from source.
(ctx context.Context)
| 630 | |
| 631 | // Parses template variables and README from source. |
| 632 | func (r *Runner) runTemplateImportParse(ctx context.Context) ( |
| 633 | workspaceTags map[string]string, vars []*sdkproto.TemplateVariable, readme []byte, err error, |
| 634 | ) { |
| 635 | ctx, span := r.startTrace(ctx, tracing.FuncName()) |
| 636 | defer span.End() |
| 637 | |
| 638 | err = r.session.Send(&sdkproto.Request{Type: &sdkproto.Request_Parse{Parse: &sdkproto.ParseRequest{}}}) |
| 639 | if err != nil { |
| 640 | return nil, nil, nil, xerrors.Errorf("parse source: %w", err) |
| 641 | } |
| 642 | for { |
| 643 | msg, err := r.session.Recv() |
| 644 | if err != nil { |
| 645 | return nil, nil, nil, xerrors.Errorf("recv parse source: %w", err) |
| 646 | } |
| 647 | switch msgType := msg.Type.(type) { |
| 648 | case *sdkproto.Response_Log: |
| 649 | r.logProvisionerJobLog(context.Background(), msgType.Log.Level, "parse job logged", |
| 650 | slog.F("level", msgType.Log.Level), |
| 651 | slog.F("output", msgType.Log.Output), |
| 652 | ) |
| 653 | |
| 654 | r.queueLog(ctx, &proto.Log{ |
| 655 | Source: proto.LogSource_PROVISIONER, |
| 656 | Level: msgType.Log.Level, |
| 657 | CreatedAt: time.Now().UnixMilli(), |
| 658 | Output: msgType.Log.Output, |
| 659 | Stage: "Parse parameters", |
| 660 | }) |
| 661 | case *sdkproto.Response_Parse: |
| 662 | pc := msgType.Parse |
| 663 | r.logger.Debug(context.Background(), "parse complete", |
| 664 | slog.F("workspace_tags", pc.WorkspaceTags), |
| 665 | slog.F("template_variables", pc.TemplateVariables), |
| 666 | slog.F("readme_len", len(pc.Readme)), |
| 667 | slog.F("error", pc.Error), |
| 668 | ) |
| 669 | if pc.Error != "" { |
| 670 | return nil, nil, nil, xerrors.Errorf("parse error: %s", pc.Error) |
| 671 | } |
| 672 | |
| 673 | return msgType.Parse.WorkspaceTags, msgType.Parse.TemplateVariables, msgType.Parse.Readme, nil |
| 674 | default: |
| 675 | return nil, nil, nil, xerrors.Errorf("invalid message type %q received from provisioner", |
| 676 | reflect.TypeOf(msg.Type).String()) |
| 677 | } |
| 678 | } |
| 679 | } |
| 680 | |
| 681 | type templateImportProvision struct { |
| 682 | Resources []*sdkproto.Resource |
no test coverage detected