mirror of https://github.com/docker/buildx.git
cli: error out on unknown command
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
parent
1de332530f
commit
cc286e2ef5
|
@ -10,11 +10,12 @@ type RootOptions struct {
|
||||||
Builder *string
|
Builder *string
|
||||||
}
|
}
|
||||||
|
|
||||||
func RootCmd(dockerCli command.Cli, opts RootOptions) *cobra.Command {
|
func RootCmd(rootcmd *cobra.Command, dockerCli command.Cli, opts RootOptions) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "imagetools",
|
Use: "imagetools",
|
||||||
Short: "Commands to work on images in registry",
|
Short: "Commands to work on images in registry",
|
||||||
ValidArgsFunction: completion.Disable,
|
ValidArgsFunction: completion.Disable,
|
||||||
|
RunE: rootcmd.RunE,
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.AddCommand(
|
cmd.AddCommand(
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package commands
|
package commands
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
debugcmd "github.com/docker/buildx/commands/debug"
|
debugcmd "github.com/docker/buildx/commands/debug"
|
||||||
|
@ -36,13 +37,22 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
|
||||||
if opt.debug {
|
if opt.debug {
|
||||||
debug.Enable()
|
debug.Enable()
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.SetContext(appcontext.Context())
|
cmd.SetContext(appcontext.Context())
|
||||||
if !isPlugin {
|
if !isPlugin {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return plugin.PersistentPreRunE(cmd, args)
|
return plugin.PersistentPreRunE(cmd, args)
|
||||||
},
|
},
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
if len(args) == 0 {
|
||||||
|
return cmd.Help()
|
||||||
|
}
|
||||||
|
_ = cmd.Help()
|
||||||
|
return cli.StatusError{
|
||||||
|
StatusCode: 1,
|
||||||
|
Status: fmt.Sprintf("ERROR: unknown command: %q", args[0]),
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
if !isPlugin {
|
if !isPlugin {
|
||||||
// match plugin behavior for standalone mode
|
// match plugin behavior for standalone mode
|
||||||
|
@ -95,7 +105,7 @@ func addCommands(cmd *cobra.Command, opts *rootOptions, dockerCli command.Cli) {
|
||||||
versionCmd(dockerCli),
|
versionCmd(dockerCli),
|
||||||
pruneCmd(dockerCli, opts),
|
pruneCmd(dockerCli, opts),
|
||||||
duCmd(dockerCli, opts),
|
duCmd(dockerCli, opts),
|
||||||
imagetoolscmd.RootCmd(dockerCli, imagetoolscmd.RootOptions{Builder: &opts.builder}),
|
imagetoolscmd.RootCmd(cmd, dockerCli, imagetoolscmd.RootOptions{Builder: &opts.builder}),
|
||||||
)
|
)
|
||||||
if confutil.IsExperimental() {
|
if confutil.IsExperimental() {
|
||||||
cmd.AddCommand(debugcmd.RootCmd(dockerCli,
|
cmd.AddCommand(debugcmd.RootCmd(dockerCli,
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/moby/buildkit/util/testutil/integration"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
var commonTests = []func(t *testing.T, sb integration.Sandbox){
|
||||||
|
testUnknownCommand,
|
||||||
|
testUnknownFlag,
|
||||||
|
}
|
||||||
|
|
||||||
|
func testUnknownCommand(t *testing.T, sb integration.Sandbox) {
|
||||||
|
cmd := buildxCmd(sb, withArgs("foo"))
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
require.Error(t, err, string(out))
|
||||||
|
|
||||||
|
cmd = buildxCmd(sb, withArgs("imagetools", "foo"))
|
||||||
|
out, err = cmd.CombinedOutput()
|
||||||
|
require.Error(t, err, string(out))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testUnknownFlag(t *testing.T, sb integration.Sandbox) {
|
||||||
|
cmd := buildxCmd(sb, withArgs("build", "--foo=bar"))
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
require.Error(t, err, string(out))
|
||||||
|
}
|
|
@ -21,6 +21,7 @@ func init() {
|
||||||
|
|
||||||
func TestIntegration(t *testing.T) {
|
func TestIntegration(t *testing.T) {
|
||||||
var tests []func(t *testing.T, sb integration.Sandbox)
|
var tests []func(t *testing.T, sb integration.Sandbox)
|
||||||
|
tests = append(tests, commonTests...)
|
||||||
tests = append(tests, buildTests...)
|
tests = append(tests, buildTests...)
|
||||||
tests = append(tests, bakeTests...)
|
tests = append(tests, bakeTests...)
|
||||||
tests = append(tests, inspectTests...)
|
tests = append(tests, inspectTests...)
|
||||||
|
|
Loading…
Reference in New Issue