package command import ( "bytes" "fmt" "strings" ) type WorkspaceListCommand struct { Meta LegacyName bool } func (c *WorkspaceListCommand) Run(args []string) int { args = c.Meta.process(args, true) 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 } cfg, err := c.Config(configPath) if err != nil { c.Ui.Error(fmt.Sprintf("Failed to load root config module: %s", err)) return 1 } // Load the backend b, err := c.Backend(&BackendOpts{ Config: cfg, }) if err != nil { c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err)) return 1 } states, err := b.States() if err != nil { c.Ui.Error(err.Error()) return 1 } env, isOverridden := c.EnvOverridden() 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) Help() string { helpText := ` Usage: terraform workspace list [DIR] List Terraform workspaces. ` return strings.TrimSpace(helpText) } func (c *WorkspaceListCommand) Synopsis() string { return "List Workspaces" }