You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraformDummyRepo2/vendor/github.com/hashicorp/terraform-plugin-docs/schemamd/write_type.go

66 lines
1.5 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package schemamd
import (
"fmt"
"io"
"github.com/zclconf/go-cty/cty"
)
func WriteType(w io.Writer, ty cty.Type) error {
switch {
case ty == cty.DynamicPseudoType:
_, err := io.WriteString(w, "Dynamic")
return err
case ty.IsPrimitiveType():
switch ty {
case cty.String:
_, err := io.WriteString(w, "String")
return err
case cty.Bool:
_, err := io.WriteString(w, "Boolean")
return err
case cty.Number:
_, err := io.WriteString(w, "Number")
return err
}
return fmt.Errorf("unexpected primitive type %q", ty.FriendlyName())
case ty.IsCollectionType():
switch {
default:
return fmt.Errorf("unexpected collection type %q", ty.FriendlyName())
case ty.IsListType():
_, err := io.WriteString(w, "List of ")
if err != nil {
return err
}
case ty.IsSetType():
_, err := io.WriteString(w, "Set of ")
if err != nil {
return err
}
case ty.IsMapType():
_, err := io.WriteString(w, "Map of ")
if err != nil {
return err
}
}
err := WriteType(w, ty.ElementType())
if err != nil {
return fmt.Errorf("unable to write element type for %q: %w", ty.FriendlyName(), err)
}
return nil
case ty.IsTupleType():
// TODO: write additional type info?
_, err := io.WriteString(w, "Tuple")
return err
case ty.IsObjectType():
_, err := io.WriteString(w, "Object")
return err
}
return fmt.Errorf("unexpected type %q", ty.FriendlyName())
}