Skip to content

Commit ce4469a

Browse files
authored
Merge pull request #5234 from thaJeztah/nicer_missing_commands
cli: improve output and consistency for unknown (sub)commands
2 parents 45fc3b3 + c60b360 commit ce4469a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+91
-84
lines changed

cli-plugins/manager/cobra.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func AddPluginCommandStubs(dockerCli command.Cli, rootCmd *cobra.Command) (err e
8282
cmd.HelpFunc()(rootCmd, args)
8383
return nil
8484
}
85-
return fmt.Errorf("docker: '%s' is not a docker command.\nSee 'docker --help'", cmd.Name())
85+
return fmt.Errorf("docker: unknown command: docker %s\n\nRun 'docker --help' for more information", cmd.Name())
8686
},
8787
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
8888
// Delegate completion to plugin

cli/command/checkpoint/create_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ func TestCheckpointCreateErrors(t *testing.T) {
2020
}{
2121
{
2222
args: []string{"too-few-arguments"},
23-
expectedError: "requires exactly 2 arguments",
23+
expectedError: "requires 2 arguments",
2424
},
2525
{
2626
args: []string{"too", "many", "arguments"},
27-
expectedError: "requires exactly 2 arguments",
27+
expectedError: "requires 2 arguments",
2828
},
2929
{
3030
args: []string{"foo", "bar"},

cli/command/checkpoint/list_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ func TestCheckpointListErrors(t *testing.T) {
2020
}{
2121
{
2222
args: []string{},
23-
expectedError: "requires exactly 1 argument",
23+
expectedError: "requires 1 argument",
2424
},
2525
{
2626
args: []string{"too", "many", "arguments"},
27-
expectedError: "requires exactly 1 argument",
27+
expectedError: "requires 1 argument",
2828
},
2929
{
3030
args: []string{"foo"},

cli/command/checkpoint/remove_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ func TestCheckpointRemoveErrors(t *testing.T) {
1919
}{
2020
{
2121
args: []string{"too-few-arguments"},
22-
expectedError: "requires exactly 2 arguments",
22+
expectedError: "requires 2 arguments",
2323
},
2424
{
2525
args: []string{"too", "many", "arguments"},
26-
expectedError: "requires exactly 2 arguments",
26+
expectedError: "requires 2 arguments",
2727
},
2828
{
2929
args: []string{"foo", "bar"},

cli/command/config/create_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ func TestConfigCreateErrors(t *testing.T) {
2828
}{
2929
{
3030
args: []string{"too_few"},
31-
expectedError: "requires exactly 2 arguments",
31+
expectedError: "requires 2 arguments",
3232
},
3333
{
3434
args: []string{"too", "many", "arguments"},
35-
expectedError: "requires exactly 2 arguments",
35+
expectedError: "requires 2 arguments",
3636
},
3737
{
3838
args: []string{"name", filepath.Join("testdata", configDataFile)},

cli/command/config/remove_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestConfigRemoveErrors(t *testing.T) {
1919
}{
2020
{
2121
args: []string{},
22-
expectedError: "requires at least 1 argument.",
22+
expectedError: "requires at least 1 argument",
2323
},
2424
{
2525
args: []string{"foo"},

cli/command/image/history_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestNewHistoryCommandErrors(t *testing.T) {
2323
{
2424
name: "wrong-args",
2525
args: []string{},
26-
expectedError: "requires exactly 1 argument.",
26+
expectedError: "requires 1 argument",
2727
},
2828
{
2929
name: "client-error",

cli/command/image/import_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TestNewImportCommandErrors(t *testing.T) {
2222
{
2323
name: "wrong-args",
2424
args: []string{},
25-
expectedError: "requires at least 1 argument.",
25+
expectedError: "requires at least 1 argument",
2626
},
2727
{
2828
name: "import-failed",

cli/command/image/inspect_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestNewInspectCommandErrors(t *testing.T) {
2121
{
2222
name: "wrong-args",
2323
args: []string{},
24-
expectedError: "requires at least 1 argument.",
24+
expectedError: "requires at least 1 argument",
2525
},
2626
}
2727
for _, tc := range testCases {

cli/command/image/list_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestNewImagesCommandErrors(t *testing.T) {
2424
{
2525
name: "wrong-args",
2626
args: []string{"arg1", "arg2"},
27-
expectedError: "requires at most 1 argument.",
27+
expectedError: "requires at most 1 argument",
2828
},
2929
{
3030
name: "failed-list",

cli/command/image/load_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestNewLoadCommandErrors(t *testing.T) {
2424
{
2525
name: "wrong-args",
2626
args: []string{"arg"},
27-
expectedError: "accepts no arguments.",
27+
expectedError: "accepts no arguments",
2828
},
2929
{
3030
name: "input-to-terminal",

cli/command/image/prune_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func TestNewPruneCommandErrors(t *testing.T) {
2727
{
2828
name: "wrong-args",
2929
args: []string{"something"},
30-
expectedError: "accepts no arguments.",
30+
expectedError: "accepts no arguments",
3131
},
3232
{
3333
name: "prune-error",

cli/command/image/pull_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestNewPullCommandErrors(t *testing.T) {
2323
}{
2424
{
2525
name: "wrong-args",
26-
expectedError: "requires exactly 1 argument.",
26+
expectedError: "requires 1 argument",
2727
args: []string{},
2828
},
2929
{

cli/command/image/push_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestNewPushCommandErrors(t *testing.T) {
2121
{
2222
name: "wrong-args",
2323
args: []string{},
24-
expectedError: "requires exactly 1 argument.",
24+
expectedError: "requires 1 argument",
2525
},
2626
{
2727
name: "invalid-name",

cli/command/image/remove_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestNewRemoveCommandErrors(t *testing.T) {
3939
}{
4040
{
4141
name: "wrong args",
42-
expectedError: "requires at least 1 argument.",
42+
expectedError: "requires at least 1 argument",
4343
},
4444
{
4545
name: "ImageRemove fail with force option",

cli/command/image/save_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestNewSaveCommandErrors(t *testing.T) {
2323
{
2424
name: "wrong args",
2525
args: []string{},
26-
expectedError: "requires at least 1 argument.",
26+
expectedError: "requires at least 1 argument",
2727
},
2828
{
2929
name: "output to terminal",

cli/command/image/tag_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestCliNewTagCommandErrors(t *testing.T) {
1515
{"image1"},
1616
{"image1", "image2", "image3"},
1717
}
18-
expectedError := "\"tag\" requires exactly 2 arguments."
18+
expectedError := "'tag' requires 2 arguments"
1919
for _, args := range testCases {
2020
cmd := NewTagCommand(test.NewFakeCli(&fakeClient{}))
2121
cmd.SetArgs(args)

cli/command/manifest/annotate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestManifestAnnotateError(t *testing.T) {
1818
}{
1919
{
2020
args: []string{"too-few-arguments"},
21-
expectedError: "requires exactly 2 arguments",
21+
expectedError: "requires 2 arguments",
2222
},
2323
{
2424
args: []string{"th!si'sa/fa!ke/li$t/name", "example.com/alpine:3.0"},

cli/command/manifest/push_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestManifestPushErrors(t *testing.T) {
3131
}{
3232
{
3333
args: []string{"one-arg", "extra-arg"},
34-
expectedError: "requires exactly 1 argument",
34+
expectedError: "requires 1 argument",
3535
},
3636
{
3737
args: []string{"th!si'sa/fa!ke/li$t/-name"},

cli/command/network/connect_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestNetworkConnectErrors(t *testing.T) {
1919
expectedError string
2020
}{
2121
{
22-
expectedError: "requires exactly 2 arguments",
22+
expectedError: "requires 2 arguments",
2323
},
2424
{
2525
args: []string{"toto", "titi"},

cli/command/network/create_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestNetworkCreateErrors(t *testing.T) {
2121
expectedError string
2222
}{
2323
{
24-
expectedError: "exactly 1 argument",
24+
expectedError: "1 argument",
2525
},
2626
{
2727
args: []string{"toto"},

cli/command/network/disconnect_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func TestNetworkDisconnectErrors(t *testing.T) {
1717
expectedError string
1818
}{
1919
{
20-
expectedError: "requires exactly 2 arguments",
20+
expectedError: "requires 2 arguments",
2121
},
2222
{
2323
args: []string{"toto", "titi"},

cli/command/node/update_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ func TestNodeUpdateErrors(t *testing.T) {
2020
expectedError string
2121
}{
2222
{
23-
expectedError: "requires exactly 1 argument",
23+
expectedError: "requires 1 argument",
2424
},
2525
{
2626
args: []string{"node1", "node2"},
27-
expectedError: "requires exactly 1 argument",
27+
expectedError: "requires 1 argument",
2828
},
2929
{
3030
args: []string{"nodeID"},

cli/command/plugin/disable_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ func TestPluginDisableErrors(t *testing.T) {
1919
}{
2020
{
2121
args: []string{},
22-
expectedError: "requires exactly 1 argument",
22+
expectedError: "requires 1 argument",
2323
},
2424
{
2525
args: []string{"too", "many", "arguments"},
26-
expectedError: "requires exactly 1 argument",
26+
expectedError: "requires 1 argument",
2727
},
2828
{
2929
args: []string{"plugin-foo"},

cli/command/plugin/enable_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ func TestPluginEnableErrors(t *testing.T) {
2020
}{
2121
{
2222
args: []string{},
23-
expectedError: "requires exactly 1 argument",
23+
expectedError: "requires 1 argument",
2424
},
2525
{
2626
args: []string{"too-many", "arguments"},
27-
expectedError: "requires exactly 1 argument",
27+
expectedError: "requires 1 argument",
2828
},
2929
{
3030
args: []string{"plugin-foo"},

cli/command/secret/remove_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestSecretRemoveErrors(t *testing.T) {
2020
}{
2121
{
2222
args: []string{},
23-
expectedError: "requires at least 1 argument.",
23+
expectedError: "requires at least 1 argument",
2424
},
2525
{
2626
args: []string{"foo"},

cli/command/service/rollback_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ func TestRollbackWithErrors(t *testing.T) {
6565
}{
6666
{
6767
name: "not-enough-args",
68-
expectedError: "requires exactly 1 argument",
68+
expectedError: "requires 1 argument",
6969
},
7070
{
7171
name: "too-many-args",
7272
args: []string{"service-id-1", "service-id-2"},
73-
expectedError: "requires exactly 1 argument",
73+
expectedError: "requires 1 argument",
7474
},
7575
{
7676
name: "service-does-not-exists",

cli/command/stack/ps_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ func TestStackPsErrors(t *testing.T) {
2424
}{
2525
{
2626
args: []string{},
27-
expectedError: "requires exactly 1 argument",
27+
expectedError: "requires 1 argument",
2828
},
2929
{
3030
args: []string{"foo", "bar"},
31-
expectedError: "requires exactly 1 argument",
31+
expectedError: "requires 1 argument",
3232
},
3333
{
3434
args: []string{"foo"},

cli/command/swarm/join_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ func TestSwarmJoinErrors(t *testing.T) {
2323
}{
2424
{
2525
name: "not-enough-args",
26-
expectedError: "requires exactly 1 argument",
26+
expectedError: "requires 1 argument",
2727
},
2828
{
2929
name: "too-many-args",
3030
args: []string{"remote1", "remote2"},
31-
expectedError: "requires exactly 1 argument",
31+
expectedError: "requires 1 argument",
3232
},
3333
{
3434
name: "join-failed",

cli/command/swarm/join_token_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ func TestSwarmJoinTokenErrors(t *testing.T) {
2727
}{
2828
{
2929
name: "not-enough-args",
30-
expectedError: "requires exactly 1 argument",
30+
expectedError: "requires 1 argument",
3131
},
3232
{
3333
name: "too-many-args",
3434
args: []string{"worker", "manager"},
35-
expectedError: "requires exactly 1 argument",
35+
expectedError: "requires 1 argument",
3636
},
3737
{
3838
name: "invalid-args",

cli/command/trust/key_generate_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ func TestTrustKeyGenerateErrors(t *testing.T) {
2626
}{
2727
{
2828
name: "not-enough-args",
29-
expectedError: "requires exactly 1 argument",
29+
expectedError: "requires 1 argument",
3030
},
3131
{
3232
name: "too-many-args",
3333
args: []string{"key-1", "key-2"},
34-
expectedError: "requires exactly 1 argument",
34+
expectedError: "requires 1 argument",
3535
},
3636
}
3737

cli/command/trust/key_load_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ func TestTrustKeyLoadErrors(t *testing.T) {
3434
}{
3535
{
3636
name: "not-enough-args",
37-
expectedError: "exactly 1 argument",
37+
expectedError: "1 argument",
38+
args: []string{},
3839
expectedOutput: "",
3940
},
4041
{
4142
name: "too-many-args",
4243
args: []string{"iamnotakey", "alsonotakey"},
43-
expectedError: "exactly 1 argument",
44+
expectedError: "1 argument",
4445
expectedOutput: "",
4546
},
4647
{

cli/command/trust/revoke_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ func TestTrustRevokeCommandErrors(t *testing.T) {
2424
}{
2525
{
2626
name: "not-enough-args",
27-
expectedError: "requires exactly 1 argument",
27+
expectedError: "requires 1 argument",
2828
},
2929
{
3030
name: "too-many-args",
3131
args: []string{"remote1", "remote2"},
32-
expectedError: "requires exactly 1 argument",
32+
expectedError: "requires 1 argument",
3333
},
3434
{
3535
name: "sha-reference",

cli/command/trust/sign_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ func TestTrustSignCommandErrors(t *testing.T) {
3232
}{
3333
{
3434
name: "not-enough-args",
35-
expectedError: "requires exactly 1 argument",
35+
expectedError: "requires 1 argument",
3636
},
3737
{
3838
name: "too-many-args",
3939
args: []string{"image", "tag"},
40-
expectedError: "requires exactly 1 argument",
40+
expectedError: "requires 1 argument",
4141
},
4242
{
4343
name: "sha-reference",

0 commit comments

Comments
 (0)