command: parameter autocomplete for "terraform workspace ..."
Shell tab completion for all of the subcommands under "terraform workspace", providing the appropriate kind of auto-complete for each argument, along with completion for for any flags.
This commit is contained in:
parent
793da43a72
commit
ece06c35b8
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/hashicorp/terraform/command/clistate"
|
"github.com/hashicorp/terraform/command/clistate"
|
||||||
"github.com/hashicorp/terraform/state"
|
"github.com/hashicorp/terraform/state"
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
|
"github.com/posener/complete"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkspaceDeleteCommand struct {
|
type WorkspaceDeleteCommand struct {
|
||||||
|
@ -156,6 +157,21 @@ func (c *WorkspaceDeleteCommand) Run(args []string) int {
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceDeleteCommand) AutocompleteArgs() complete.Predictor {
|
||||||
|
return completePredictSequence{
|
||||||
|
complete.PredictNothing, // the "select" subcommand itself (already matched)
|
||||||
|
c.completePredictWorkspaceName(),
|
||||||
|
complete.PredictDirs(""),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceDeleteCommand) AutocompleteFlags() complete.Flags {
|
||||||
|
return complete.Flags{
|
||||||
|
"-force": complete.PredictNothing,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *WorkspaceDeleteCommand) Help() string {
|
func (c *WorkspaceDeleteCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform workspace delete [OPTIONS] NAME [DIR]
|
Usage: terraform workspace delete [OPTIONS] NAME [DIR]
|
||||||
|
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/posener/complete"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkspaceListCommand struct {
|
type WorkspaceListCommand struct {
|
||||||
|
@ -75,6 +77,14 @@ func (c *WorkspaceListCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceListCommand) AutocompleteArgs() complete.Predictor {
|
||||||
|
return complete.PredictDirs("")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceListCommand) AutocompleteFlags() complete.Flags {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *WorkspaceListCommand) Help() string {
|
func (c *WorkspaceListCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform workspace list [DIR]
|
Usage: terraform workspace list [DIR]
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/hashicorp/terraform/state"
|
"github.com/hashicorp/terraform/state"
|
||||||
"github.com/hashicorp/terraform/terraform"
|
"github.com/hashicorp/terraform/terraform"
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
|
"github.com/posener/complete"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkspaceNewCommand struct {
|
type WorkspaceNewCommand struct {
|
||||||
|
@ -156,6 +157,20 @@ func (c *WorkspaceNewCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceNewCommand) AutocompleteArgs() complete.Predictor {
|
||||||
|
return completePredictSequence{
|
||||||
|
complete.PredictNothing, // the "new" subcommand itself (already matched)
|
||||||
|
complete.PredictAnything,
|
||||||
|
complete.PredictDirs(""),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceNewCommand) AutocompleteFlags() complete.Flags {
|
||||||
|
return complete.Flags{
|
||||||
|
"-state": complete.PredictFiles("*.tfstate"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *WorkspaceNewCommand) Help() string {
|
func (c *WorkspaceNewCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform workspace new [OPTIONS] NAME [DIR]
|
Usage: terraform workspace new [OPTIONS] NAME [DIR]
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
|
"github.com/posener/complete"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkspaceSelectCommand struct {
|
type WorkspaceSelectCommand struct {
|
||||||
|
@ -103,6 +104,18 @@ func (c *WorkspaceSelectCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceSelectCommand) AutocompleteArgs() complete.Predictor {
|
||||||
|
return completePredictSequence{
|
||||||
|
complete.PredictNothing, // the "select" subcommand itself (already matched)
|
||||||
|
c.completePredictWorkspaceName(),
|
||||||
|
complete.PredictDirs(""),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceSelectCommand) AutocompleteFlags() complete.Flags {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *WorkspaceSelectCommand) Help() string {
|
func (c *WorkspaceSelectCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform workspace select NAME [DIR]
|
Usage: terraform workspace select NAME [DIR]
|
||||||
|
|
|
@ -2,6 +2,8 @@ package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/posener/complete"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkspaceShowCommand struct {
|
type WorkspaceShowCommand struct {
|
||||||
|
@ -26,6 +28,14 @@ func (c *WorkspaceShowCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceShowCommand) AutocompleteArgs() complete.Predictor {
|
||||||
|
return complete.PredictNothing
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *WorkspaceShowCommand) AutocompleteFlags() complete.Flags {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *WorkspaceShowCommand) Help() string {
|
func (c *WorkspaceShowCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform workspace show
|
Usage: terraform workspace show
|
||||||
|
|
Loading…
Reference in New Issue