func()

in pkg/report/step_result_report.go [33:68]


func (r *StepResultReport) Write(result *proto.StepResult) error {

	var marshal func(protobuf.Message) ([]byte, error)
	switch r.format {
	case FormatJSON:
		marshal = protojson.Marshal
	case FormatProtoText:
		marshal = prototext.Marshal
	default:
		return fmt.Errorf("unsupported format: %v", r.format)
	}

	data, err := marshal(result)

	if err != nil {
		return fmt.Errorf("failed to write step results report: %w", err)
	}

	var filename string
	switch {
	case r.filename == "" && r.format == FormatJSON:
		filename = "step-results.json"
	case r.filename == "" && r.format == FormatProtoText:
		filename = "step-results.txtpb"
	default:
		filename = r.filename
	}

	err = os.WriteFile(filename, data, 0640)

	if err != nil {
		return fmt.Errorf("failed to write step results report: %w", err)
	}

	return nil
}