blob: 09b8ef94b4310cb61e9d652fcdfb3f8dbca908c6 [file] [edit]
// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package jsonfunction
import (
"encoding/json"
"github.com/zclconf/go-cty/cty/function"
)
// parameter represents a parameter to a function.
type parameter struct {
// Name is an optional name for the argument.
Name string `json:"name,omitempty"`
// Description is an optional human-readable description
// of the argument
Description string `json:"description,omitempty"`
// IsNullable is true if null is acceptable value for the argument
IsNullable bool `json:"is_nullable,omitempty"`
// A type that any argument for this parameter must conform to.
// Use [marshalType] to populate this field.
Type json.RawMessage `json:"type"`
}
func marshalParameter(p *function.Parameter) *parameter {
if p == nil {
return &parameter{}
}
return &parameter{
Name: p.Name,
Description: p.Description,
IsNullable: p.AllowNull,
Type: marshalType(p.Type),
}
}
func marshalParameters(parameters []function.Parameter) []*parameter {
ret := make([]*parameter, len(parameters))
for k, p := range parameters {
ret[k] = marshalParameter(&p)
}
return ret
}