github.com/pulumi/terraform@v1.4.0/pkg/command/workspace_list.go (about)

     1  package command
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"strings"
     7  
     8  	"github.com/pulumi/terraform/pkg/tfdiags"
     9  	"github.com/posener/complete"
    10  )
    11  
    12  type WorkspaceListCommand struct {
    13  	Meta
    14  	LegacyName bool
    15  }
    16  
    17  func (c *WorkspaceListCommand) Run(args []string) int {
    18  	args = c.Meta.process(args)
    19  	envCommandShowWarning(c.Ui, c.LegacyName)
    20  
    21  	cmdFlags := c.Meta.defaultFlagSet("workspace list")
    22  	cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
    23  	if err := cmdFlags.Parse(args); err != nil {
    24  		c.Ui.Error(fmt.Sprintf("Error parsing command-line flags: %s\n", err.Error()))
    25  		return 1
    26  	}
    27  
    28  	args = cmdFlags.Args()
    29  	configPath, err := ModulePath(args)
    30  	if err != nil {
    31  		c.Ui.Error(err.Error())
    32  		return 1
    33  	}
    34  
    35  	var diags tfdiags.Diagnostics
    36  
    37  	backendConfig, backendDiags := c.loadBackendConfig(configPath)
    38  	diags = diags.Append(backendDiags)
    39  	if diags.HasErrors() {
    40  		c.showDiagnostics(diags)
    41  		return 1
    42  	}
    43  
    44  	// Load the backend
    45  	b, backendDiags := c.Backend(&BackendOpts{
    46  		Config: backendConfig,
    47  	})
    48  	diags = diags.Append(backendDiags)
    49  	if backendDiags.HasErrors() {
    50  		c.showDiagnostics(diags)
    51  		return 1
    52  	}
    53  
    54  	// This command will not write state
    55  	c.ignoreRemoteVersionConflict(b)
    56  
    57  	states, err := b.Workspaces()
    58  	if err != nil {
    59  		c.Ui.Error(err.Error())
    60  		return 1
    61  	}
    62  
    63  	env, isOverridden := c.WorkspaceOverridden()
    64  
    65  	var out bytes.Buffer
    66  	for _, s := range states {
    67  		if s == env {
    68  			out.WriteString("* ")
    69  		} else {
    70  			out.WriteString("  ")
    71  		}
    72  		out.WriteString(s + "\n")
    73  	}
    74  
    75  	c.Ui.Output(out.String())
    76  
    77  	if isOverridden {
    78  		c.Ui.Output(envIsOverriddenNote)
    79  	}
    80  
    81  	return 0
    82  }
    83  
    84  func (c *WorkspaceListCommand) AutocompleteArgs() complete.Predictor {
    85  	return complete.PredictDirs("")
    86  }
    87  
    88  func (c *WorkspaceListCommand) AutocompleteFlags() complete.Flags {
    89  	return nil
    90  }
    91  
    92  func (c *WorkspaceListCommand) Help() string {
    93  	helpText := `
    94  Usage: terraform [global options] workspace list
    95  
    96    List Terraform workspaces.
    97  
    98  `
    99  	return strings.TrimSpace(helpText)
   100  }
   101  
   102  func (c *WorkspaceListCommand) Synopsis() string {
   103  	return "List Workspaces"
   104  }