From 0d48a93f57327838ae7daa75da9c630ece938516 Mon Sep 17 00:00:00 2001 From: Milas Bowman Date: Mon, 5 Feb 2024 17:38:15 -0500 Subject: [PATCH] chore(load): ensure context passed to load This wasn't always getting passed, so adding it to the wrapper function where it'll pass the `WithContext()` loader method at the last moment. Signed-off-by: Milas Bowman --- cmd/compose/attach.go | 2 +- cmd/compose/build.go | 2 +- cmd/compose/completion.go | 4 ++-- cmd/compose/compose.go | 34 ++++++++++++++++------------------ cmd/compose/config.go | 5 ++--- cmd/compose/cp.go | 2 +- cmd/compose/down.go | 2 +- cmd/compose/events.go | 2 +- cmd/compose/exec.go | 2 +- cmd/compose/images.go | 2 +- cmd/compose/kill.go | 2 +- cmd/compose/logs.go | 2 +- cmd/compose/pause.go | 4 ++-- cmd/compose/port.go | 2 +- cmd/compose/ps.go | 2 +- cmd/compose/publish.go | 2 +- cmd/compose/pull.go | 2 +- cmd/compose/push.go | 2 +- cmd/compose/remove.go | 2 +- cmd/compose/restart.go | 2 +- cmd/compose/run.go | 2 +- cmd/compose/scale.go | 2 +- cmd/compose/start.go | 2 +- cmd/compose/stats.go | 2 +- cmd/compose/stop.go | 2 +- cmd/compose/top.go | 2 +- cmd/compose/viz.go | 2 +- cmd/compose/wait.go | 2 +- cmd/compose/watch.go | 2 +- 29 files changed, 47 insertions(+), 50 deletions(-) diff --git a/cmd/compose/attach.go b/cmd/compose/attach.go index 1899edef1..340079cf6 100644 --- a/cmd/compose/attach.go +++ b/cmd/compose/attach.go @@ -64,7 +64,7 @@ func attachCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service } func runAttach(ctx context.Context, dockerCli command.Cli, backend api.Service, opts attachOpts) error { - projectName, err := opts.toProjectName(dockerCli) + projectName, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/build.go b/cmd/compose/build.go index 5f855c922..e96fbfb1c 100644 --- a/cmd/compose/build.go +++ b/cmd/compose/build.go @@ -136,7 +136,7 @@ func buildCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runBuild(ctx context.Context, dockerCli command.Cli, backend api.Service, opts buildOptions, services []string) error { - project, err := opts.ToProject(dockerCli, services, cli.WithResolvedPaths(true), cli.WithoutEnvironmentResolution) + project, err := opts.ToProject(ctx, dockerCli, services, cli.WithResolvedPaths(true), cli.WithoutEnvironmentResolution) if err != nil { return err } diff --git a/cmd/compose/completion.go b/cmd/compose/completion.go index 83b233f1e..21351d254 100644 --- a/cmd/compose/completion.go +++ b/cmd/compose/completion.go @@ -37,7 +37,7 @@ func noCompletion() validArgsFn { func completeServiceNames(dockerCli command.Cli, p *ProjectOptions) validArgsFn { return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { p.Offline = true - project, err := p.ToProject(dockerCli, nil) + project, err := p.ToProject(cmd.Context(), dockerCli, nil) if err != nil { return nil, cobra.ShellCompDirectiveNoFileComp } @@ -72,7 +72,7 @@ func completeProjectNames(backend api.Service) func(cmd *cobra.Command, args []s func completeProfileNames(dockerCli command.Cli, p *ProjectOptions) validArgsFn { return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { p.Offline = true - project, err := p.ToProject(dockerCli, nil) + project, err := p.ToProject(cmd.Context(), dockerCli, nil) if err != nil { return nil, cobra.ShellCompDirectiveNoFileComp } diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index 17e5e071c..5d3d62916 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -35,18 +35,17 @@ import ( dockercli "github.com/docker/cli/cli" "github.com/docker/cli/cli-plugins/manager" "github.com/docker/cli/cli/command" + "github.com/docker/compose/v2/cmd/formatter" + "github.com/docker/compose/v2/pkg/api" + "github.com/docker/compose/v2/pkg/compose" + ui "github.com/docker/compose/v2/pkg/progress" "github.com/docker/compose/v2/pkg/remote" + "github.com/docker/compose/v2/pkg/utils" buildkit "github.com/moby/buildkit/util/progress/progressui" "github.com/morikuni/aec" "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" - - "github.com/docker/compose/v2/cmd/formatter" - "github.com/docker/compose/v2/pkg/api" - "github.com/docker/compose/v2/pkg/compose" - ui "github.com/docker/compose/v2/pkg/progress" - "github.com/docker/compose/v2/pkg/utils" ) const ( @@ -140,10 +139,9 @@ func (o *ProjectOptions) WithServices(dockerCli command.Cli, fn ProjectServicesF options := []cli.ProjectOptionsFn{ cli.WithResolvedPaths(true), cli.WithDiscardEnvFile, - cli.WithContext(ctx), } - project, err := o.ToProject(dockerCli, args, options...) + project, err := o.ToProject(ctx, dockerCli, args, options...) if err != nil { return err } @@ -164,11 +162,11 @@ func (o *ProjectOptions) addProjectFlags(f *pflag.FlagSet) { _ = f.MarkHidden("workdir") } -func (o *ProjectOptions) projectOrName(dockerCli command.Cli, services ...string) (*types.Project, string, error) { +func (o *ProjectOptions) projectOrName(ctx context.Context, dockerCli command.Cli, services ...string) (*types.Project, string, error) { name := o.ProjectName var project *types.Project if len(o.ConfigPaths) > 0 || o.ProjectName == "" { - p, err := o.ToProject(dockerCli, services, cli.WithDiscardEnvFile) + p, err := o.ToProject(ctx, dockerCli, services, cli.WithDiscardEnvFile) if err != nil { envProjectName := os.Getenv(ComposeProjectName) if envProjectName != "" { @@ -182,7 +180,7 @@ func (o *ProjectOptions) projectOrName(dockerCli command.Cli, services ...string return project, name, nil } -func (o *ProjectOptions) toProjectName(dockerCli command.Cli) (string, error) { +func (o *ProjectOptions) toProjectName(ctx context.Context, dockerCli command.Cli) (string, error) { if o.ProjectName != "" { return o.ProjectName, nil } @@ -192,18 +190,20 @@ func (o *ProjectOptions) toProjectName(dockerCli command.Cli) (string, error) { return envProjectName, nil } - project, err := o.ToProject(dockerCli, nil) + project, err := o.ToProject(ctx, dockerCli, nil) if err != nil { return "", err } return project.Name, nil } -func (o *ProjectOptions) ToProject(dockerCli command.Cli, services []string, po ...cli.ProjectOptionsFn) (*types.Project, error) { +func (o *ProjectOptions) ToProject(ctx context.Context, dockerCli command.Cli, services []string, po ...cli.ProjectOptionsFn) (*types.Project, error) { if !o.Offline { - po = o.configureRemoteLoaders(dockerCli, po) + po = append(po, o.remoteLoaders(dockerCli)...) } + po = append(po, cli.WithContext(ctx)) + options, err := o.toProjectOptions(po...) if err != nil { return nil, compose.WrapComposeError(err) @@ -248,12 +248,10 @@ func (o *ProjectOptions) ToProject(dockerCli command.Cli, services []string, po return project, err } -func (o *ProjectOptions) configureRemoteLoaders(dockerCli command.Cli, po []cli.ProjectOptionsFn) []cli.ProjectOptionsFn { +func (o *ProjectOptions) remoteLoaders(dockerCli command.Cli) []cli.ProjectOptionsFn { git := remote.NewGitRemoteLoader(o.Offline) oci := remote.NewOCIRemoteLoader(dockerCli, o.Offline) - - po = append(po, cli.WithResourceLoader(git), cli.WithResourceLoader(oci)) - return po + return []cli.ProjectOptionsFn{cli.WithResourceLoader(git), cli.WithResourceLoader(oci)} } func (o *ProjectOptions) toProjectOptions(po ...cli.ProjectOptionsFn) (*cli.ProjectOptions, error) { diff --git a/cmd/compose/config.go b/cmd/compose/config.go index cf26832cf..b0386be72 100644 --- a/cmd/compose/config.go +++ b/cmd/compose/config.go @@ -57,9 +57,8 @@ func (o *configOptions) ToProject(ctx context.Context, dockerCli command.Cli, se cli.WithNormalization(!o.noNormalize), cli.WithConsistency(!o.noConsistency), cli.WithDefaultProfiles(o.Profiles...), - cli.WithDiscardEnvFile, - cli.WithContext(ctx)) - return o.ProjectOptions.ToProject(dockerCli, services, po...) + cli.WithDiscardEnvFile) + return o.ProjectOptions.ToProject(ctx, dockerCli, services, po...) } func configCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *cobra.Command { diff --git a/cmd/compose/cp.go b/cmd/compose/cp.go index 4c346b2a7..ee7c5a9d6 100644 --- a/cmd/compose/cp.go +++ b/cmd/compose/cp.go @@ -76,7 +76,7 @@ func copyCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runCopy(ctx context.Context, dockerCli command.Cli, backend api.Service, opts copyOptions) error { - name, err := opts.toProjectName(dockerCli) + name, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/down.go b/cmd/compose/down.go index 97215a785..4343d7870 100644 --- a/cmd/compose/down.go +++ b/cmd/compose/down.go @@ -78,7 +78,7 @@ func downCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runDown(ctx context.Context, dockerCli command.Cli, backend api.Service, opts downOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/events.go b/cmd/compose/events.go index 10ef5b442..cfd90d03d 100644 --- a/cmd/compose/events.go +++ b/cmd/compose/events.go @@ -52,7 +52,7 @@ func eventsCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service } func runEvents(ctx context.Context, dockerCli command.Cli, backend api.Service, opts eventsOpts, services []string) error { - name, err := opts.toProjectName(dockerCli) + name, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/exec.go b/cmd/compose/exec.go index 12ebc7005..1fdd6e731 100644 --- a/cmd/compose/exec.go +++ b/cmd/compose/exec.go @@ -82,7 +82,7 @@ func execCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runExec(ctx context.Context, dockerCli command.Cli, backend api.Service, opts execOpts) error { - projectName, err := opts.toProjectName(dockerCli) + projectName, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/images.go b/cmd/compose/images.go index d10700767..fd120544e 100644 --- a/cmd/compose/images.go +++ b/cmd/compose/images.go @@ -57,7 +57,7 @@ func imagesCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service } func runImages(ctx context.Context, dockerCli command.Cli, backend api.Service, opts imageOptions, services []string) error { - projectName, err := opts.toProjectName(dockerCli) + projectName, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/kill.go b/cmd/compose/kill.go index d38201cbc..358eaec7a 100644 --- a/cmd/compose/kill.go +++ b/cmd/compose/kill.go @@ -55,7 +55,7 @@ func killCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runKill(ctx context.Context, dockerCli command.Cli, backend api.Service, opts killOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/logs.go b/cmd/compose/logs.go index 2df7bb59f..62a7224c1 100644 --- a/cmd/compose/logs.go +++ b/cmd/compose/logs.go @@ -71,7 +71,7 @@ func logsCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runLogs(ctx context.Context, dockerCli command.Cli, backend api.Service, opts logsOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/pause.go b/cmd/compose/pause.go index acfc0dec5..6f3457719 100644 --- a/cmd/compose/pause.go +++ b/cmd/compose/pause.go @@ -45,7 +45,7 @@ func pauseCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runPause(ctx context.Context, dockerCli command.Cli, backend api.Service, opts pauseOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } @@ -76,7 +76,7 @@ func unpauseCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Servic } func runUnPause(ctx context.Context, dockerCli command.Cli, backend api.Service, opts unpauseOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/port.go b/cmd/compose/port.go index 0baa875c3..d63b03ec4 100644 --- a/cmd/compose/port.go +++ b/cmd/compose/port.go @@ -63,7 +63,7 @@ func portCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runPort(ctx context.Context, dockerCli command.Cli, backend api.Service, opts portOptions, service string) error { - projectName, err := opts.toProjectName(dockerCli) + projectName, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/ps.go b/cmd/compose/ps.go index 8b3f3d34d..5bc131df3 100644 --- a/cmd/compose/ps.go +++ b/cmd/compose/ps.go @@ -92,7 +92,7 @@ func psCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *c } func runPs(ctx context.Context, dockerCli command.Cli, backend api.Service, services []string, opts psOptions) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/publish.go b/cmd/compose/publish.go index 2ef14aabf..32a202085 100644 --- a/cmd/compose/publish.go +++ b/cmd/compose/publish.go @@ -50,7 +50,7 @@ func publishCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Servic } func runPublish(ctx context.Context, dockerCli command.Cli, backend api.Service, opts publishOptions, repository string) error { - project, err := opts.ToProject(dockerCli, nil) + project, err := opts.ToProject(ctx, dockerCli, nil) if err != nil { return err } diff --git a/cmd/compose/pull.go b/cmd/compose/pull.go index d6ce561be..3f350ee86 100644 --- a/cmd/compose/pull.go +++ b/cmd/compose/pull.go @@ -94,7 +94,7 @@ func (opts pullOptions) apply(project *types.Project, services []string) (*types } func runPull(ctx context.Context, dockerCli command.Cli, backend api.Service, opts pullOptions, services []string) error { - project, err := opts.ToProject(dockerCli, services) + project, err := opts.ToProject(ctx, dockerCli, services) if err != nil { return err } diff --git a/cmd/compose/push.go b/cmd/compose/push.go index ccc0e5991..603c2092f 100644 --- a/cmd/compose/push.go +++ b/cmd/compose/push.go @@ -54,7 +54,7 @@ func pushCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runPush(ctx context.Context, dockerCli command.Cli, backend api.Service, opts pushOptions, services []string) error { - project, err := opts.ToProject(dockerCli, services) + project, err := opts.ToProject(ctx, dockerCli, services) if err != nil { return err } diff --git a/cmd/compose/remove.go b/cmd/compose/remove.go index 46ac7b13f..adcd3663c 100644 --- a/cmd/compose/remove.go +++ b/cmd/compose/remove.go @@ -60,7 +60,7 @@ Any data which is not in a volume will be lost.`, } func runRemove(ctx context.Context, dockerCli command.Cli, backend api.Service, opts removeOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/restart.go b/cmd/compose/restart.go index 9fe65f461..aeb44c86c 100644 --- a/cmd/compose/restart.go +++ b/cmd/compose/restart.go @@ -56,7 +56,7 @@ func restartCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Servic } func runRestart(ctx context.Context, dockerCli command.Cli, backend api.Service, opts restartOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli) + project, name, err := opts.projectOrName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/run.go b/cmd/compose/run.go index c2649d5f1..19db6e32e 100644 --- a/cmd/compose/run.go +++ b/cmd/compose/run.go @@ -156,7 +156,7 @@ func runCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) * return nil }), RunE: Adapt(func(ctx context.Context, args []string) error { - project, err := p.ToProject(dockerCli, []string{options.Service}, cgo.WithResolvedPaths(true), cgo.WithDiscardEnvFile) + project, err := p.ToProject(ctx, dockerCli, []string{options.Service}, cgo.WithResolvedPaths(true), cgo.WithDiscardEnvFile) if err != nil { return err } diff --git a/cmd/compose/scale.go b/cmd/compose/scale.go index 2ab435127..ea852dabb 100644 --- a/cmd/compose/scale.go +++ b/cmd/compose/scale.go @@ -61,7 +61,7 @@ func scaleCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) func runScale(ctx context.Context, dockerCli command.Cli, backend api.Service, opts scaleOptions, serviceReplicaTuples map[string]int) error { services := maps.Keys(serviceReplicaTuples) - project, err := opts.ToProject(dockerCli, services) + project, err := opts.ToProject(ctx, dockerCli, services) if err != nil { return err } diff --git a/cmd/compose/start.go b/cmd/compose/start.go index 682a78906..6bde4b104 100644 --- a/cmd/compose/start.go +++ b/cmd/compose/start.go @@ -44,7 +44,7 @@ func startCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runStart(ctx context.Context, dockerCli command.Cli, backend api.Service, opts startOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/stats.go b/cmd/compose/stats.go index c6c2f7fed..2e503fe5d 100644 --- a/cmd/compose/stats.go +++ b/cmd/compose/stats.go @@ -63,7 +63,7 @@ Refer to https://docs.docker.com/go/formatting/ for more information about forma } func runStats(ctx context.Context, dockerCli command.Cli, opts statsOptions, service []string) error { - name, err := opts.ProjectOptions.toProjectName(dockerCli) + name, err := opts.ProjectOptions.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/stop.go b/cmd/compose/stop.go index 2818ef4f3..d06cf6f22 100644 --- a/cmd/compose/stop.go +++ b/cmd/compose/stop.go @@ -54,7 +54,7 @@ func stopCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runStop(ctx context.Context, dockerCli command.Cli, backend api.Service, opts stopOptions, services []string) error { - project, name, err := opts.projectOrName(dockerCli, services...) + project, name, err := opts.projectOrName(ctx, dockerCli, services...) if err != nil { return err } diff --git a/cmd/compose/top.go b/cmd/compose/top.go index fb7dd30d4..9d84c57a9 100644 --- a/cmd/compose/top.go +++ b/cmd/compose/top.go @@ -50,7 +50,7 @@ func topCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) * } func runTop(ctx context.Context, dockerCli command.Cli, backend api.Service, opts topOptions, services []string) error { - projectName, err := opts.toProjectName(dockerCli) + projectName, err := opts.toProjectName(ctx, dockerCli) if err != nil { return err } diff --git a/cmd/compose/viz.go b/cmd/compose/viz.go index 2b4d65073..4410136f5 100644 --- a/cmd/compose/viz.go +++ b/cmd/compose/viz.go @@ -65,7 +65,7 @@ func vizCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) * func runViz(ctx context.Context, dockerCli command.Cli, backend api.Service, opts *vizOptions) error { _, _ = fmt.Fprintln(os.Stderr, "viz command is EXPERIMENTAL") - project, err := opts.ToProject(dockerCli, nil) + project, err := opts.ToProject(ctx, dockerCli, nil) if err != nil { return err } diff --git a/cmd/compose/wait.go b/cmd/compose/wait.go index e95818b95..88c939140 100644 --- a/cmd/compose/wait.go +++ b/cmd/compose/wait.go @@ -61,7 +61,7 @@ func waitCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runWait(ctx context.Context, dockerCli command.Cli, backend api.Service, opts *waitOptions) (int64, error) { - _, name, err := opts.projectOrName(dockerCli) + _, name, err := opts.projectOrName(ctx, dockerCli) if err != nil { return 0, err } diff --git a/cmd/compose/watch.go b/cmd/compose/watch.go index 24d704570..cf39a2075 100644 --- a/cmd/compose/watch.go +++ b/cmd/compose/watch.go @@ -63,7 +63,7 @@ func watchCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) } func runWatch(ctx context.Context, dockerCli command.Cli, backend api.Service, watchOpts watchOptions, buildOpts buildOptions, services []string) error { - project, err := watchOpts.ToProject(dockerCli, nil) + project, err := watchOpts.ToProject(ctx, dockerCli, nil) if err != nil { return err }