mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-30 10:47:14 -06:00
ebafa51723
This is a rather-messy, complex change to get the "command" package building again against the new backend API that was updated for the new configuration loader. A lot of this is mechanical rewriting to the new API, but meta_config.go and meta_backend.go in particular saw some major changes to interface with the new loader APIs and to deal with the change in order of steps in the backend API.
103 lines
1.8 KiB
Go
103 lines
1.8 KiB
Go
package command
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
|
|
"github.com/hashicorp/terraform/tfdiags"
|
|
"github.com/posener/complete"
|
|
)
|
|
|
|
type WorkspaceListCommand struct {
|
|
Meta
|
|
LegacyName bool
|
|
}
|
|
|
|
func (c *WorkspaceListCommand) Run(args []string) int {
|
|
args, err := c.Meta.process(args, true)
|
|
if err != nil {
|
|
return 1
|
|
}
|
|
|
|
envCommandShowWarning(c.Ui, c.LegacyName)
|
|
|
|
cmdFlags := c.Meta.flagSet("workspace list")
|
|
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
|
|
if err := cmdFlags.Parse(args); err != nil {
|
|
return 1
|
|
}
|
|
|
|
args = cmdFlags.Args()
|
|
configPath, err := ModulePath(args)
|
|
if err != nil {
|
|
c.Ui.Error(err.Error())
|
|
return 1
|
|
}
|
|
|
|
var diags tfdiags.Diagnostics
|
|
|
|
backendConfig, backendDiags := c.loadBackendConfig(configPath)
|
|
diags = diags.Append(backendDiags)
|
|
if diags.HasErrors() {
|
|
c.showDiagnostics(diags)
|
|
return 1
|
|
}
|
|
|
|
// Load the backend
|
|
b, backendDiags := c.Backend(&BackendOpts{
|
|
Config: backendConfig,
|
|
})
|
|
diags = diags.Append(backendDiags)
|
|
if backendDiags.HasErrors() {
|
|
c.showDiagnostics(diags)
|
|
return 1
|
|
}
|
|
|
|
states, err := b.States()
|
|
if err != nil {
|
|
c.Ui.Error(err.Error())
|
|
return 1
|
|
}
|
|
|
|
env, isOverridden := c.WorkspaceOverridden()
|
|
|
|
var out bytes.Buffer
|
|
for _, s := range states {
|
|
if s == env {
|
|
out.WriteString("* ")
|
|
} else {
|
|
out.WriteString(" ")
|
|
}
|
|
out.WriteString(s + "\n")
|
|
}
|
|
|
|
c.Ui.Output(out.String())
|
|
|
|
if isOverridden {
|
|
c.Ui.Output(envIsOverriddenNote)
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func (c *WorkspaceListCommand) AutocompleteArgs() complete.Predictor {
|
|
return complete.PredictDirs("")
|
|
}
|
|
|
|
func (c *WorkspaceListCommand) AutocompleteFlags() complete.Flags {
|
|
return nil
|
|
}
|
|
|
|
func (c *WorkspaceListCommand) Help() string {
|
|
helpText := `
|
|
Usage: terraform workspace list [DIR]
|
|
|
|
List Terraform workspaces.
|
|
`
|
|
return strings.TrimSpace(helpText)
|
|
}
|
|
|
|
func (c *WorkspaceListCommand) Synopsis() string {
|
|
return "List Workspaces"
|
|
}
|