mirror of
https://github.com/hashicorp/terraform.git
synced 2026-03-21 18:10:30 -04:00
This commit moves some code around to fix configuration loading during the (legacy) import command. And add vars to the show command.
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
// Copyright IBM Corp. 2014, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package arguments
|
|
|
|
import (
|
|
"github.com/hashicorp/terraform/internal/tfdiags"
|
|
)
|
|
|
|
// Show represents the command-line arguments for the show command.
|
|
type Show struct {
|
|
// Path is the path to the state file or plan file to be displayed. If
|
|
// unspecified, show will display the latest state snapshot.
|
|
Path string
|
|
|
|
// ViewType specifies which output format to use: human, JSON, or "raw".
|
|
ViewType ViewType
|
|
|
|
Vars *Vars
|
|
}
|
|
|
|
// ParseShow processes CLI arguments, returning a Show value and errors.
|
|
// If errors are encountered, a Show value is still returned representing
|
|
// the best effort interpretation of the arguments.
|
|
func ParseShow(args []string) (*Show, tfdiags.Diagnostics) {
|
|
var diags tfdiags.Diagnostics
|
|
show := &Show{
|
|
Path: "",
|
|
Vars: &Vars{},
|
|
}
|
|
|
|
var jsonOutput bool
|
|
cmdFlags := extendedFlagSet("show", nil, nil, show.Vars)
|
|
cmdFlags.BoolVar(&jsonOutput, "json", false, "json")
|
|
|
|
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) > 1 {
|
|
diags = diags.Append(tfdiags.Sourceless(
|
|
tfdiags.Error,
|
|
"Too many command line arguments",
|
|
"Expected at most one positional argument.",
|
|
))
|
|
}
|
|
|
|
if len(args) > 0 {
|
|
show.Path = args[0]
|
|
}
|
|
|
|
switch {
|
|
case jsonOutput:
|
|
show.ViewType = ViewJSON
|
|
default:
|
|
show.ViewType = ViewHuman
|
|
}
|
|
|
|
return show, diags
|
|
}
|