terraform/command/workspace_list.go

90 lines
1.5 KiB
Go
Raw Normal View History

2017-02-23 19:13:28 +01:00
package command
import (
"bytes"
"fmt"
"strings"
)
type WorkspaceListCommand struct {
2017-02-23 19:13:28 +01:00
Meta
LegacyName bool
2017-02-23 19:13:28 +01:00
}
func (c *WorkspaceListCommand) Run(args []string) int {
args, err := c.Meta.process(args, true)
if err != nil {
return 1
}
2017-02-23 19:13:28 +01:00
envCommandShowWarning(c.Ui, c.LegacyName)
cmdFlags := c.Meta.flagSet("workspace list")
2017-02-23 19:13:28 +01:00
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
}
cfg, err := c.Config(configPath)
if err != nil {
c.Ui.Error(fmt.Sprintf("Failed to load root config module: %s", err))
return 1
}
2017-02-23 19:13:28 +01:00
// Load the backend
b, err := c.Backend(&BackendOpts{
Config: cfg,
})
2017-02-23 19:13:28 +01:00
if err != nil {
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
return 1
}
states, err := b.States()
2017-02-23 19:13:28 +01:00
if err != nil {
c.Ui.Error(err.Error())
return 1
}
env, isOverridden := c.WorkspaceOverridden()
2017-02-23 19:13:28 +01:00
var out bytes.Buffer
for _, s := range states {
if s == env {
2017-02-23 19:13:28 +01:00
out.WriteString("* ")
} else {
out.WriteString(" ")
}
out.WriteString(s + "\n")
}
c.Ui.Output(out.String())
if isOverridden {
c.Ui.Output(envIsOverriddenNote)
}
2017-02-23 19:13:28 +01:00
return 0
}
func (c *WorkspaceListCommand) Help() string {
2017-02-23 19:13:28 +01:00
helpText := `
Usage: terraform workspace list [DIR]
2017-02-23 19:13:28 +01:00
List Terraform workspaces.
2017-02-23 19:13:28 +01:00
`
return strings.TrimSpace(helpText)
}
func (c *WorkspaceListCommand) Synopsis() string {
return "List Workspaces"
2017-02-23 19:13:28 +01:00
}