Add config path argument to env commands
In order to operate in parity with other commands, the env command should take a path argument to locate the configuration. This however introduces the issue of a possible name conflict between a path and subcommand, or printing an incorrect current environment for the bare `env` command. In favor of simplicity this removes the current env output and only prints usage when no subcommand is provided.
This commit is contained in:
parent
c8526484b3
commit
06663991d1
|
@ -1,12 +1,6 @@
|
||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import "strings"
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/hashicorp/terraform/backend"
|
|
||||||
"github.com/mitchellh/cli"
|
|
||||||
)
|
|
||||||
|
|
||||||
// EnvCommand is a Command Implementation that manipulates local state
|
// EnvCommand is a Command Implementation that manipulates local state
|
||||||
// environments.
|
// environments.
|
||||||
|
@ -19,34 +13,7 @@ func (c *EnvCommand) Run(args []string) int {
|
||||||
|
|
||||||
cmdFlags := c.Meta.flagSet("env")
|
cmdFlags := c.Meta.flagSet("env")
|
||||||
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
|
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
|
||||||
if err := cmdFlags.Parse(args); err != nil {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
args = cmdFlags.Args()
|
|
||||||
if len(args) > 0 {
|
|
||||||
c.Ui.Error("0 arguments expected.\n")
|
|
||||||
return cli.RunResultHelp
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load the backend
|
|
||||||
b, err := c.Backend(nil)
|
|
||||||
if err != nil {
|
|
||||||
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
multi, ok := b.(backend.MultiState)
|
|
||||||
if !ok {
|
|
||||||
c.Ui.Error(envNotSupported)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
_, current, err := multi.States()
|
|
||||||
if err != nil {
|
|
||||||
c.Ui.Error(err.Error())
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Ui.Output(fmt.Sprintf("Current environment is %q\n", current))
|
|
||||||
c.Ui.Output(c.Help())
|
c.Ui.Output(c.Help())
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,15 +26,21 @@ func (c *EnvDeleteCommand) Run(args []string) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
args = cmdFlags.Args()
|
args = cmdFlags.Args()
|
||||||
if len(args) != 1 {
|
if len(args) == 0 {
|
||||||
c.Ui.Error("expected NAME.\n")
|
c.Ui.Error("expected NAME.\n")
|
||||||
return cli.RunResultHelp
|
return cli.RunResultHelp
|
||||||
}
|
}
|
||||||
|
|
||||||
delEnv := args[0]
|
delEnv := args[0]
|
||||||
|
|
||||||
|
configPath, err := ModulePath(args[1:])
|
||||||
|
if err != nil {
|
||||||
|
c.Ui.Error(err.Error())
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
// Load the backend
|
// Load the backend
|
||||||
b, err := c.Backend(nil)
|
b, err := c.Backend(&BackendOpts{ConfigPath: configPath})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
||||||
return 1
|
return 1
|
||||||
|
@ -134,7 +140,7 @@ func (c *EnvDeleteCommand) Run(args []string) int {
|
||||||
}
|
}
|
||||||
func (c *EnvDeleteCommand) Help() string {
|
func (c *EnvDeleteCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform env delete [OPTIONS] NAME
|
Usage: terraform env delete [OPTIONS] NAME [DIR]
|
||||||
|
|
||||||
Delete a Terraform environment
|
Delete a Terraform environment
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,14 @@ func (c *EnvListCommand) Run(args []string) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configPath, err := ModulePath(args)
|
||||||
|
if err != nil {
|
||||||
|
c.Ui.Error(err.Error())
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
// Load the backend
|
// Load the backend
|
||||||
b, err := c.Backend(nil)
|
b, err := c.Backend(&BackendOpts{ConfigPath: configPath})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
||||||
return 1
|
return 1
|
||||||
|
@ -56,7 +62,7 @@ func (c *EnvListCommand) Run(args []string) int {
|
||||||
|
|
||||||
func (c *EnvListCommand) Help() string {
|
func (c *EnvListCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform env list
|
Usage: terraform env list [DIR]
|
||||||
|
|
||||||
List Terraform environments.
|
List Terraform environments.
|
||||||
`
|
`
|
||||||
|
|
|
@ -29,15 +29,21 @@ func (c *EnvNewCommand) Run(args []string) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
args = cmdFlags.Args()
|
args = cmdFlags.Args()
|
||||||
if len(args) != 1 {
|
if len(args) == 0 {
|
||||||
c.Ui.Error("expected NAME.\n")
|
c.Ui.Error("expected NAME.\n")
|
||||||
return cli.RunResultHelp
|
return cli.RunResultHelp
|
||||||
}
|
}
|
||||||
|
|
||||||
newEnv := args[0]
|
newEnv := args[0]
|
||||||
|
|
||||||
|
configPath, err := ModulePath(args[1:])
|
||||||
|
if err != nil {
|
||||||
|
c.Ui.Error(err.Error())
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
// Load the backend
|
// Load the backend
|
||||||
b, err := c.Backend(nil)
|
b, err := c.Backend(&BackendOpts{ConfigPath: configPath})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
||||||
return 1
|
return 1
|
||||||
|
@ -116,7 +122,7 @@ func (c *EnvNewCommand) Run(args []string) int {
|
||||||
|
|
||||||
func (c *EnvNewCommand) Help() string {
|
func (c *EnvNewCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform env new [OPTIONS] NAME
|
Usage: terraform env new [OPTIONS] NAME [DIR]
|
||||||
|
|
||||||
Create a new Terraform environment.
|
Create a new Terraform environment.
|
||||||
|
|
||||||
|
|
|
@ -21,13 +21,19 @@ func (c *EnvSelectCommand) Run(args []string) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
args = cmdFlags.Args()
|
args = cmdFlags.Args()
|
||||||
if len(args) != 1 {
|
if len(args) == 0 {
|
||||||
c.Ui.Error("expected NAME.\n")
|
c.Ui.Error("expected NAME.\n")
|
||||||
return cli.RunResultHelp
|
return cli.RunResultHelp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configPath, err := ModulePath(args[1:])
|
||||||
|
if err != nil {
|
||||||
|
c.Ui.Error(err.Error())
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
// Load the backend
|
// Load the backend
|
||||||
b, err := c.Backend(nil)
|
b, err := c.Backend(&BackendOpts{ConfigPath: configPath})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
c.Ui.Error(fmt.Sprintf("Failed to load backend: %s", err))
|
||||||
return 1
|
return 1
|
||||||
|
@ -81,7 +87,7 @@ func (c *EnvSelectCommand) Run(args []string) int {
|
||||||
|
|
||||||
func (c *EnvSelectCommand) Help() string {
|
func (c *EnvSelectCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform env select NAME
|
Usage: terraform env select NAME [DIR]
|
||||||
|
|
||||||
Change Terraform environment.
|
Change Terraform environment.
|
||||||
`
|
`
|
||||||
|
|
Loading…
Reference in New Issue