Files
opentf/internal/command/metadata_functions.go

56 lines
1.4 KiB
Go

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package command
import (
"github.com/mitchellh/cli"
"github.com/opentofu/opentofu/internal/command/arguments"
"github.com/opentofu/opentofu/internal/command/views"
)
// MetadataFunctionsCommand is a Command implementation that prints out information
// about the available functions in OpenTofu.
type MetadataFunctionsCommand struct {
Meta
}
func (c *MetadataFunctionsCommand) Help() string {
return metadataFunctionsCommandHelp
}
func (c *MetadataFunctionsCommand) Synopsis() string {
return "Show signatures and descriptions for the available functions"
}
func (c *MetadataFunctionsCommand) Run(rawArgs []string) int {
// new view
common, rawArgs := arguments.ParseView(rawArgs)
c.View.Configure(common)
// Parse and validate flags
_, closer, diags := arguments.ParseMetadataFunctions(rawArgs)
defer closer()
// Instantiate the view, even if there are flag errors, so that we render
// diagnostics according to the desired view
view := views.NewMetadataFunctions(c.View)
if diags.HasErrors() {
view.Diagnostics(diags)
return cli.RunResultHelp
}
if !view.PrintFunctions() {
return 1
}
return 0
}
const metadataFunctionsCommandHelp = `
Usage: tofu [global options] metadata functions -json
Prints out a json representation of the available function signatures.
`