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