You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform/internal/command/arguments/graph.go

68 lines
2.0 KiB

// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package arguments
import "github.com/hashicorp/terraform/internal/tfdiags"
// Graph represents the command-line arguments for the graph command.
type Graph struct {
// DrawCycles highlights any cycles in the graph with colored edges.
DrawCycles bool
// GraphType is the type of operation graph to output (plan,
// plan-refresh-only, plan-destroy, or apply). Empty string means the
// default resource-dependency summary.
GraphType string
// ModuleDepth is a deprecated option that was used in prior versions to
// control the depth of modules shown.
ModuleDepth int
// Verbose enables verbose graph output.
Verbose bool
// Plan is the path to a saved plan file to render as a graph.
Plan string
// Vars are the variable-related flags (-var, -var-file).
Vars *Vars
}
// ParseGraph processes CLI arguments, returning a Graph value and errors.
// If errors are encountered, a Graph value is still returned representing
// the best effort interpretation of the arguments.
func ParseGraph(args []string) (*Graph, tfdiags.Diagnostics) {
var diags tfdiags.Diagnostics
graph := &Graph{
ModuleDepth: -1,
Vars: &Vars{},
}
cmdFlags := extendedFlagSet("graph", nil, nil, graph.Vars)
cmdFlags.BoolVar(&graph.DrawCycles, "draw-cycles", false, "draw-cycles")
cmdFlags.StringVar(&graph.GraphType, "type", "", "type")
cmdFlags.IntVar(&graph.ModuleDepth, "module-depth", -1, "module-depth")
cmdFlags.BoolVar(&graph.Verbose, "verbose", false, "verbose")
cmdFlags.StringVar(&graph.Plan, "plan", "", "plan")
if err := cmdFlags.Parse(args); err != nil {
diags = diags.Append(tfdiags.Sourceless(
tfdiags.Error,
"Failed to parse command-line flags",
err.Error(),
))
}
args = cmdFlags.Args()
if len(args) > 0 {
diags = diags.Append(tfdiags.Sourceless(
tfdiags.Error,
"Too many command line arguments",
"Expected no positional arguments. Did you mean to use -chdir?",
))
}
return graph, diags
}