github.com/lymingtonprecision/terraform@v0.9.9-0.20170613092852-62acef9611a9/command/workspace_list.go (about) 1 package command 2 3 import ( 4 "bytes" 5 "fmt" 6 "strings" 7 ) 8 9 type WorkspaceListCommand struct { 10 Meta 11 LegacyName bool 12 } 13 14 func (c *WorkspaceListCommand) Run(args []string) int { 15 args = c.Meta.process(args, true) 16 17 envCommandShowWarning(c.Ui, c.LegacyName) 18 19 cmdFlags := c.Meta.flagSet("workspace list") 20 cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } 21 if err := cmdFlags.Parse(args); err != nil { 22 return 1 23 } 24 25 args = cmdFlags.Args() 26 configPath, err := ModulePath(args) 27 if err != nil { 28 c.Ui.Error(err.Error()) 29 return 1 30 } 31 32 cfg, err := c.Config(configPath) 33 if err != nil { 34 c.Ui.Error(fmt.Sprintf("Failed to load root config module: %s", err)) 35 return 1 36 } 37 38 // Load the backend 39 b, err := c.Backend(&BackendOpts{ 40 Config: cfg, 41 }) 42 43 if err != nil { 44 c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err)) 45 return 1 46 } 47 48 states, err := b.States() 49 if err != nil { 50 c.Ui.Error(err.Error()) 51 return 1 52 } 53 54 env, isOverridden := c.WorkspaceOverridden() 55 56 var out bytes.Buffer 57 for _, s := range states { 58 if s == env { 59 out.WriteString("* ") 60 } else { 61 out.WriteString(" ") 62 } 63 out.WriteString(s + "\n") 64 } 65 66 c.Ui.Output(out.String()) 67 68 if isOverridden { 69 c.Ui.Output(envIsOverriddenNote) 70 } 71 72 return 0 73 } 74 75 func (c *WorkspaceListCommand) Help() string { 76 helpText := ` 77 Usage: terraform workspace list [DIR] 78 79 List Terraform workspaces. 80 ` 81 return strings.TrimSpace(helpText) 82 } 83 84 func (c *WorkspaceListCommand) Synopsis() string { 85 return "List Workspaces" 86 }