mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-05-16 07:01:54 -04:00
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>
61 lines
1.7 KiB
Go
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
|
|
}
|