github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/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  }