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