@@ -18,19 +18,20 @@ type HookPluginData struct {
18
18
// which is currently being invoked. If a hook for `docker context` is
19
19
// configured and the user executes `docker context ls`, the plugin will
20
20
// be invoked with `context`.
21
- RootCmd string
22
- Flags map [string ]string
21
+ RootCmd string
22
+ Flags map [string ]string
23
+ CommandError string
23
24
}
24
25
25
26
// RunCLICommandHooks is the entrypoint into the hooks execution flow after
26
27
// a main CLI command was executed. It calls the hook subcommand for all
27
28
// present CLI plugins that declare support for hooks in their metadata and
28
29
// parses/prints their responses.
29
- func RunCLICommandHooks (dockerCli command.Cli , rootCmd , subCommand * cobra.Command ) {
30
+ func RunCLICommandHooks (dockerCli command.Cli , rootCmd , subCommand * cobra.Command , cmdErrorMessage string ) {
30
31
commandName := strings .TrimPrefix (subCommand .CommandPath (), rootCmd .Name ()+ " " )
31
32
flags := getCommandFlags (subCommand )
32
33
33
- runHooks (dockerCli , rootCmd , subCommand , commandName , flags )
34
+ runHooks (dockerCli , rootCmd , subCommand , commandName , flags , cmdErrorMessage )
34
35
}
35
36
36
37
// RunPluginHooks is the entrypoint for the hooks execution flow
@@ -39,16 +40,16 @@ func RunPluginHooks(dockerCli command.Cli, rootCmd, subCommand *cobra.Command, a
39
40
commandName := strings .Join (args , " " )
40
41
flags := getNaiveFlags (args )
41
42
42
- runHooks (dockerCli , rootCmd , subCommand , commandName , flags )
43
+ runHooks (dockerCli , rootCmd , subCommand , commandName , flags , "" )
43
44
}
44
45
45
- func runHooks (dockerCli command.Cli , rootCmd , subCommand * cobra.Command , invokedCommand string , flags map [string ]string ) {
46
- nextSteps := invokeAndCollectHooks (dockerCli , rootCmd , subCommand , invokedCommand , flags )
46
+ func runHooks (dockerCli command.Cli , rootCmd , subCommand * cobra.Command , invokedCommand string , flags map [string ]string , cmdErrorMessage string ) {
47
+ nextSteps := invokeAndCollectHooks (dockerCli , rootCmd , subCommand , invokedCommand , flags , cmdErrorMessage )
47
48
48
49
hooks .PrintNextSteps (dockerCli .Err (), nextSteps )
49
50
}
50
51
51
- func invokeAndCollectHooks (dockerCli command.Cli , rootCmd , subCmd * cobra.Command , subCmdStr string , flags map [string ]string ) []string {
52
+ func invokeAndCollectHooks (dockerCli command.Cli , rootCmd , subCmd * cobra.Command , subCmdStr string , flags map [string ]string , cmdErrorMessage string ) []string {
52
53
pluginsCfg := dockerCli .ConfigFile ().Plugins
53
54
if pluginsCfg == nil {
54
55
return nil
@@ -66,7 +67,11 @@ func invokeAndCollectHooks(dockerCli command.Cli, rootCmd, subCmd *cobra.Command
66
67
continue
67
68
}
68
69
69
- hookReturn , err := p .RunHook (match , flags )
70
+ hookReturn , err := p .RunHook (HookPluginData {
71
+ RootCmd : match ,
72
+ Flags : flags ,
73
+ CommandError : cmdErrorMessage ,
74
+ })
70
75
if err != nil {
71
76
// skip misbehaving plugins, but don't halt execution
72
77
continue
0 commit comments