/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/command/arguments/workspace_delete.go
79 строк
2 KB
Sarah French
refactor: Update `workspace select` and `new` subcommands to use the arguments package for parsing arguments and flags (#38430)
01 май 2026, 18:39
Не верифицирован
01 май 2026, 18:39
6554bda
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package arguments import ( "errors" "fmt" "time" "github.com/hashicorp/terraform/internal/tfdiags" ) // WorkspaceDelete represent flags and arguments specific to the `terraform workspace delete` command. type WorkspaceDelete struct { Workspace // Flags Lock bool LockTimeout time.Duration Force bool // Positional arguments Name string } // ParseWorkspaceDelete processes CLI arguments, returning a WorkspaceDelete value and errors. // If errors are encountered, an WorkspaceDelete value is still returned representing // the best effort interpretation of the arguments. func ParseWorkspaceDelete(args []string) (*WorkspaceDelete, tfdiags.Diagnostics) { var diags tfdiags.Diagnostics var force bool var stateLock bool var stateLockTimeout time.Duration cmdFlags := defaultFlagSet("workspace delete") cmdFlags.BoolVar(&force, "force", false, "force removal of a non-empty workspace") cmdFlags.BoolVar(&stateLock, "lock", true, "lock state") cmdFlags.DurationVar(&stateLockTimeout, "lock-timeout", 0, "lock timeout") if err := cmdFlags.Parse(args); err != nil { diags = diags.Append(tfdiags.Sourceless( tfdiags.Error, "Failed to parse command-line flags", err.Error(), )) } // `workspace delete` takes only one positional argument: workspace name. args = cmdFlags.Args() var name string if len(args) == 0 { diags = diags.Append(errors.New("Expected a single argument: NAME.")) // Recreating pre-existing error from command package } else { // Obtain and validate name argument // // We purposefully don't use ValidWorkspaceName here; if a user // creates a workspace with an invalid name they should be able to // delete it easily. name = args[0] if name == "" { diags = diags.Append(fmt.Errorf("Expected a workspace name as an argument, instead got an empty string: %q\n", args[0])) } // Checking for extra arguments here, not with a len != 1 check above, allows the name to be returned args = args[1:] if len(args) != 0 { diags = diags.Append(errors.New("Expected a single argument: NAME.")) } } return &WorkspaceDelete{ Workspace: Workspace{ViewType: ViewHuman}, Name: name, Lock: stateLock, LockTimeout: stateLockTimeout, Force: force, }, diags }