mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-03 01:23:53 +08:00 
			
		
		
		
	cobra/commands: cancel command context on signal
See https://github.com/docker/cli/pull/4599 and https://github.com/docker/cli/pull/4769. Since we switched to using the cobra command context instead of `appcontext`, we need to set up the signal handling that was being provided by `appcontext`, as well as configuring the context with the OTEL tracing utilities also used by `appcontext`. This commit introduces `cobrautil.ConfigureContext` which implements the pre-existing signal handling logic from `appcontext` and cancels the command's context when a signal is received, as well as doing the relevant OTEL config. Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
		@@ -9,6 +9,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/distribution/reference"
 | 
			
		||||
	"github.com/docker/buildx/builder"
 | 
			
		||||
	"github.com/docker/buildx/util/cobrautil"
 | 
			
		||||
	"github.com/docker/buildx/util/cobrautil/completion"
 | 
			
		||||
	"github.com/docker/buildx/util/imagetools"
 | 
			
		||||
	"github.com/docker/buildx/util/progress"
 | 
			
		||||
@@ -269,10 +270,10 @@ func createCmd(dockerCli command.Cli, opts RootOptions) *cobra.Command {
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
		Use:   "create [OPTIONS] [SOURCE] [SOURCE...]",
 | 
			
		||||
		Short: "Create a new image based on source images",
 | 
			
		||||
		RunE: func(cmd *cobra.Command, args []string) error {
 | 
			
		||||
		RunE: cobrautil.ConfigureContext(func(cmd *cobra.Command, args []string) error {
 | 
			
		||||
			options.builder = *opts.Builder
 | 
			
		||||
			return runCreate(cmd.Context(), dockerCli, options, args)
 | 
			
		||||
		},
 | 
			
		||||
		}),
 | 
			
		||||
		ValidArgsFunction: completion.Disable,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/docker/buildx/builder"
 | 
			
		||||
	"github.com/docker/buildx/util/cobrautil"
 | 
			
		||||
	"github.com/docker/buildx/util/cobrautil/completion"
 | 
			
		||||
	"github.com/docker/buildx/util/imagetools"
 | 
			
		||||
	"github.com/docker/cli-docs-tool/annotation"
 | 
			
		||||
@@ -48,10 +49,10 @@ func inspectCmd(dockerCli command.Cli, rootOpts RootOptions) *cobra.Command {
 | 
			
		||||
		Use:   "inspect [OPTIONS] NAME",
 | 
			
		||||
		Short: "Show details of an image in the registry",
 | 
			
		||||
		Args:  cli.ExactArgs(1),
 | 
			
		||||
		RunE: func(cmd *cobra.Command, args []string) error {
 | 
			
		||||
		RunE: cobrautil.ConfigureContext(func(cmd *cobra.Command, args []string) error {
 | 
			
		||||
			options.builder = *rootOpts.Builder
 | 
			
		||||
			return runInspect(cmd.Context(), dockerCli, options, args[0])
 | 
			
		||||
		},
 | 
			
		||||
		}),
 | 
			
		||||
		ValidArgsFunction: completion.Disable,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user