Files
opentf/internal/command/arguments/get.go
Andrei Ciobanu 69c3688a50 Remove arguments.State from extendedFlagSet and instead use the AddFlags method for granularity
In order to be able to get rid of the state related configurations from
Meta, we want to be able to register those flags from one single
location.
We want also to be able to register these in a more granular way, since
some commands require only the locking specific flags, while other
commands use also the state path or backup path.

Signed-off-by: Andrei Ciobanu <andrei.ciobanu@opentofu.org>
2026-04-21 12:43:59 +03:00

62 lines
1.8 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 arguments
import (
"github.com/opentofu/opentofu/internal/tfdiags"
)
// Get represents the command-line arguments for the get command.
type Get struct {
// Update is the flag that can be used to upgrade the version of the modules.
Update bool
// TestsDirectory indicates the path where the tests are stored
TestsDirectory string
// Vars holds and provides information for the flags related to variables that a user can give into the process
Vars *Vars
// ViewOptions specifies which view options to use
ViewOptions ViewOptions
}
// ParseGet processes CLI arguments, returning a Get value, a closer function, and errors.
// If errors are encountered, a Get value is still returned representing
// the best effort interpretation of the arguments.
func ParseGet(args []string) (*Get, func(), tfdiags.Diagnostics) {
var diags tfdiags.Diagnostics
arguments := &Get{
Vars: &Vars{},
}
cmdFlags := extendedFlagSet("get", nil, arguments.Vars)
cmdFlags.BoolVar(&arguments.Update, "update", false, "update")
cmdFlags.StringVar(&arguments.TestsDirectory, "test-directory", "tests", "test-directory")
arguments.ViewOptions.AddFlags(cmdFlags, false)
if err := cmdFlags.Parse(args); err != nil {
diags = diags.Append(tfdiags.Sourceless(
tfdiags.Error,
"Failed to parse command-line flags",
err.Error(),
))
}
closer, moreDiags := arguments.ViewOptions.Parse()
diags = diags.Append(moreDiags)
if diags.HasErrors() {
return arguments, closer, diags
}
if len(cmdFlags.Args()) > 0 {
diags = diags.Append(tfdiags.Sourceless(
tfdiags.Error,
"Unexpected argument",
"Too many command line arguments. Did you mean to use -chdir?",
))
}
return arguments, closer, diags
}