/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/command/workspace_command.go
151 строка
4 KB
Sarah French
refactor: Make `workspace list` human output implementation use the `views` package (#38900)
22 июл 2026, 12:39
Не верифицирован
22 июл 2026, 12:39
27dac20
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package command import ( "strings" "github.com/hashicorp/cli" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/terraform/internal/command/arguments" "github.com/hashicorp/terraform/internal/tfdiags" ) // WorkspaceCommand is a Command Implementation that manipulates workspaces, // which allow multiple distinct states and variables from a single config. type WorkspaceCommand struct { Meta LegacyName bool } func (c *WorkspaceCommand) Run(args []string) int { c.Meta.process(args) envCommandShowWarning(c.Ui, c.LegacyName) cmdFlags := c.Meta.extendedFlagSet("workspace") cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } return cli.RunResultHelp } func (c *WorkspaceCommand) Help() string { helpText := ` Usage: terraform [global options] workspace new, list, show, select and delete Terraform workspaces. ` return strings.TrimSpace(helpText) } func (c *WorkspaceCommand) Synopsis() string { return "Workspace management" } // validWorkspaceName returns true is this name is valid to use as a workspace name. // Since most named states are accessed via a filesystem path or URL, check if // escaping the name would be required. // // This has been moved to the arguments package but also kept here, as the function is used // in some places for reasons other than validating command-line arguments. // TODO: Decide whether to keep this function or use arguments package to validate ENV values too. func validWorkspaceName(name string) bool { return arguments.ValidWorkspaceName(name) } func envCommandShowWarning(ui cli.Ui, show bool) { if !show { return } ui.Warn(`Warning: the "terraform env" family of commands is deprecated. "Workspace" is now the preferred term for what earlier Terraform versions called "environment", to reduce ambiguity caused by the latter term colliding with other concepts. The "terraform workspace" commands should be used instead. "terraform env" will be removed in a future Terraform version. `) } // envCommandWarningDiag returns diagnostic version of the output from envCommandShowWarning. // This should be used when the output is being rendered in a machine-readable format. func envCommandWarningDiag(show bool) tfdiags.Diagnostics { var diags tfdiags.Diagnostics if !show { return diags // empty } diags = diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagWarning, Detail: `Warning: the "terraform env" family of commands is deprecated.`, Summary: `"Workspace" is now the preferred term for what earlier Terraform versions called "environment", to reduce ambiguity caused by the latter term colliding with other concepts. The "terraform workspace" commands should be used instead. "terraform env" will be removed in a future Terraform version. `, }) return diags } const ( envExists = `Workspace %q already exists` envDoesNotExist = ` Workspace %q doesn't exist. You can create this workspace with the "new" subcommand or include the "-or-create" flag with the "select" subcommand.` envChanged = `[reset][green]Switched to workspace %q.` envCreated = ` [reset][green][bold]Created and switched to workspace %q![reset][green] You're now on a new, empty workspace. Workspaces isolate their state, so if you run "terraform plan" Terraform will not see any existing state for this configuration. ` envDeleted = `[reset][green]Deleted workspace %q!` envWarnNotEmpty = `[reset][yellow]WARNING: %q was non-empty. The resources managed by the deleted workspace may still exist, but are no longer manageable by Terraform since the state has been deleted. ` envDelCurrent = ` Workspace %[1]q is your active workspace. You cannot delete the currently active workspace. Please switch to another workspace and try again. ` envIsOverriddenNote = ` The active workspace is being overridden using the TF_WORKSPACE environment variable. ` envIsOverriddenSelectError = ` The selected workspace is currently overridden using the TF_WORKSPACE environment variable. To select a new workspace, either update this environment variable or unset it and then run this command again. ` envIsOverriddenNewError = ` The workspace is currently overridden using the TF_WORKSPACE environment variable. You cannot create a new workspace when using this setting. To create a new workspace, either unset this environment variable or update it to match the workspace name you are trying to create, and then run this command again. ` )