github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/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 configPath, err := ModulePath(args) 23 if err != nil { 24 c.Ui.Error(err.Error()) 25 return 1 26 } 27 28 // Load the backend 29 b, err := c.Backend(&BackendOpts{ConfigPath: configPath}) 30 if err != nil { 31 c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err)) 32 return 1 33 } 34 35 states, err := b.States() 36 if err != nil { 37 c.Ui.Error(err.Error()) 38 return 1 39 } 40 41 env := c.Env() 42 43 var out bytes.Buffer 44 for _, s := range states { 45 if s == env { 46 out.WriteString("* ") 47 } else { 48 out.WriteString(" ") 49 } 50 out.WriteString(s + "\n") 51 } 52 53 c.Ui.Output(out.String()) 54 return 0 55 } 56 57 func (c *EnvListCommand) Help() string { 58 helpText := ` 59 Usage: terraform env list [DIR] 60 61 List Terraform environments. 62 ` 63 return strings.TrimSpace(helpText) 64 } 65 66 func (c *EnvListCommand) Synopsis() string { 67 return "List Environments" 68 }