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  }