|
|
@@ -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) {
|