github.com/brandonstevens/terraform@v0.9.6-0.20170512224929-5367f2607e16/command/env_list.go (about) 1 package command 2 3 import ( 4 "bytes" 5 "fmt" 6 "strings" 7 ) 8 9 type EnvListCommand struct { 10 Meta 11 } 12 13 func (c *EnvListCommand) Run(args []string) int { 14 args = c.Meta.process(args, true) 15 16 cmdFlags := c.Meta.flagSet("env list") 17 cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } 18 if err := cmdFlags.Parse(args); err != nil { 19 return 1 20 } 21 22 args = cmdFlags.Args() 23 configPath, err := ModulePath(args) 24 if err != nil { 25 c.Ui.Error(err.Error()) 26 return 1 27 } 28 29 // Load the backend 30 b, err := c.Backend(&BackendOpts{ConfigPath: configPath}) 31 if err != nil { 32 c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err)) 33 return 1 34 } 35 36 states, err := b.States() 37 if err != nil { 38 c.Ui.Error(err.Error()) 39 return 1 40 } 41 42 env := c.Env() 43 44 var out bytes.Buffer 45 for _, s := range states { 46 if s == env { 47 out.WriteString("* ") 48 } else { 49 out.WriteString(" ") 50 } 51 out.WriteString(s + "\n") 52 } 53 54 c.Ui.Output(out.String()) 55 return 0 56 } 57 58 func (c *EnvListCommand) Help() string { 59 helpText := ` 60 Usage: terraform env list [DIR] 61 62 List Terraform environments. 63 ` 64 return strings.TrimSpace(helpText) 65 } 66 67 func (c *EnvListCommand) Synopsis() string { 68 return "List Environments" 69 }