Add workaround to allow autocomplete install/uninstall via a normal command (#576)

pull/573/head^2
Jeff Mitchell 6 years ago committed by GitHub
parent 83314b7750
commit 1cb66c69e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -256,6 +256,24 @@ func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {
Func: "get-token",
}, nil
},
"config autocomplete": func() (cli.Command, error) {
return &config.AutocompleteCommand{
Command: base.NewCommand(ui),
Func: "base",
}, nil
},
"config autocomplete install": func() (cli.Command, error) {
return &config.AutocompleteCommand{
Command: base.NewCommand(ui),
Func: "install",
}, nil
},
"config autocomplete uninstall": func() (cli.Command, error) {
return &config.AutocompleteCommand{
Command: base.NewCommand(ui),
Func: "uninstall",
}, nil
},
"database": func() (cli.Command, error) {
return &database.Command{

@ -0,0 +1,58 @@
package config
import (
"fmt"
"github.com/hashicorp/boundary/internal/cmd/base"
"github.com/mitchellh/cli"
)
var _ cli.Command = (*Command)(nil)
type AutocompleteCommand struct {
*base.Command
Func string
}
func (c *AutocompleteCommand) Synopsis() string {
verb := "Install"
switch c.Func {
case "uninstall":
verb = "Uninstall"
case "base":
verb = "Install or uninstall"
}
return fmt.Sprintf("%s autocompletion for Boundary's CLI", verb)
}
func (c *AutocompleteCommand) Help() string {
verb := "installs"
switch c.Func {
case "uninstall":
verb = "uninstalls"
case "base":
verb = "installs or uninstalls"
}
subcmd := ""
switch c.Func {
case "uninstall":
subcmd = " uninstall"
case "install":
subcmd = " install"
}
return base.WrapForHelpText([]string{
fmt.Sprintf("Usage: boundary config autocomplete%s [options] [args]", subcmd),
"",
fmt.Sprintf(" This command %s autocompletion support for Boundary's CLI", verb),
})
}
func (c *AutocompleteCommand) Run(args []string) int {
if len(args) > 0 {
return cli.RunResultHelp
}
return 0
}

@ -21,6 +21,18 @@ import (
// setupEnv parses args and may replace them and sets some env vars to known
// values based on format options
func setupEnv(args []string) (retArgs []string, format string, outputCurlString bool) {
// handle the workaround for autocomplete install/uninstall not being exported
if len(args) == 3 &&
args[0] == "config" &&
args[1] == "autocomplete" {
switch args[2] {
case "install":
return []string{"-autocomplete-install"}, "table", false
case "uninstall":
return []string{"-autocomplete-uninstall"}, "table", false
}
}
var nextArgFormat bool
for _, arg := range args {

Loading…
Cancel
Save