in schema/v1/outputs.go [74:110]
func (o *Output) verifyDefaultValueMatchesType(protoOutput *proto.Spec_Content_Output) error {
if o.Default == nil || protoOutput.Default == nil {
return nil
}
if o.Type == nil {
return nil
}
var defaultType OutputType
switch *o.Type {
case OutputTypeBoolean:
if _, ok := protoOutput.Default.Kind.(*structpb.Value_BoolValue); ok {
defaultType = OutputTypeBoolean
}
case OutputTypeArray:
if _, ok := protoOutput.Default.Kind.(*structpb.Value_ListValue); ok {
defaultType = OutputTypeArray
}
case OutputTypeNumber:
if _, ok := protoOutput.Default.Kind.(*structpb.Value_NumberValue); ok {
defaultType = OutputTypeNumber
}
case OutputTypeString:
if _, ok := protoOutput.Default.Kind.(*structpb.Value_StringValue); ok {
defaultType = OutputTypeString
}
case OutputTypeStruct:
if _, ok := protoOutput.Default.Kind.(*structpb.Value_StructValue); ok {
defaultType = OutputTypeStruct
}
default:
return fmt.Errorf("unsupported type: %v", o.Type)
}
if defaultType != *o.Type {
return fmt.Errorf("output type %v and default value type %v must match", o.Type, defaultType)
}
return nil
}