Files
opentf/internal/command/arguments/workspace_select.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

61 lines
1.7 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"
)
type WorkspaceSelect struct {
// Workspace represents the name of the workspace that the user wants to be selected.
WorkspaceName string
// CreateIfMissing is a flag that the user can set to "true" to force the creation of the workspace
// in case it's missing from the current list of workspaces.
CreateIfMissing bool
// ViewOptions contains the options that allows the user to configure different types of outputs
// from the current command.
ViewOptions ViewOptions
// Vars holds the information that might be needed to be given through `-var`/`-var-file`.
Vars *Vars
}
func ParseWorkspaceSelect(args []string) (*WorkspaceSelect, func(), tfdiags.Diagnostics) {
var diags tfdiags.Diagnostics
ret := &WorkspaceSelect{
Vars: &Vars{},
}
cmdFlags := extendedFlagSet("workspace select", nil, ret.Vars)
cmdFlags.BoolVar(&ret.CreateIfMissing, "or-create", false, "create workspace if it does not exist")
ret.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(),
))
}
args = cmdFlags.Args()
if len(args) != 1 {
diags = diags.Append(tfdiags.Sourceless(
tfdiags.Error,
"Invalid arguments list",
"Expected a single argument: NAME.",
))
} else {
ret.WorkspaceName = args[0]
}
closer, moreDiags := ret.ViewOptions.Parse()
diags = diags.Append(moreDiags)
return ret, closer, diags
}