Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package docker-compose for openSUSE:Factory checked in at 2024-05-27 11:54:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker-compose (Old) and /work/SRC/openSUSE:Factory/.docker-compose.new.24587 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose" Mon May 27 11:54:29 2024 rev:42 rq:1176776 version:2.27.1 Changes: -------- --- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2024-04-25 20:50:00.543900402 +0200 +++ /work/SRC/openSUSE:Factory/.docker-compose.new.24587/docker-compose.changes 2024-05-27 12:02:33.160653639 +0200 @@ -1,0 +2,29 @@ +Fri May 24 12:38:43 UTC 2024 - opensuse_buildserv...@ojkastl.de + +- Update to version 2.27.1: + * build(deps): bump github.com/containerd/containerd from 1.7.16 + to 1.7.17 + * build(deps): bump github.com/docker/buildx from 0.14.0 to + 0.14.1 + * drop COMPOSE_EXPERIMENTAL_OTEL as docker/cli has opentelemetry + in + * add gui/composeview as part of available commands + * fix opentelemetry + * bump compose-go to version v2.1.1 + * Set endpoint-specific DriverOpts + * Bump compose-go version to latest main + * Backport OpenBSD patches + * add new navigation menu to open Compose app configuration in + Docker Desktop + * build(deps): bump github.com/fsnotify/fsevents from 0.1.1 to + 0.2.0 + * build(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0 + * fix --resolve-image-digests + * allow a local .env file to override compose.yaml sibling .env + * Bump docker engine and cli to version 26.1.3 + * Bump docker to v26.1.2 + * Add documentation for --menu up option and COMPOSE_MENU + environemnt variable + * chore(deps): bump docker to v26.1.1 (#11794) + +------------------------------------------------------------------- Old: ---- compose-2.27.0.obscpio New: ---- compose-2.27.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker-compose.spec ++++++ --- /var/tmp/diff_new_pack.vMFmPa/_old 2024-05-27 12:02:33.972683450 +0200 +++ /var/tmp/diff_new_pack.vMFmPa/_new 2024-05-27 12:02:33.976683597 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: docker-compose -Version: 2.27.0 +Version: 2.27.1 Release: 0 Summary: Define and run multi-container applications with Docker License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.vMFmPa/_old 2024-05-27 12:02:34.008684772 +0200 +++ /var/tmp/diff_new_pack.vMFmPa/_new 2024-05-27 12:02:34.012684919 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/docker/compose</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.27.0</param> + <param name="revision">v2.27.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> @@ -17,7 +17,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="manual"> - <param name="archive">compose-2.27.0.obscpio</param> + <param name="archive">compose-2.27.1.obscpio</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.vMFmPa/_old 2024-05-27 12:02:34.040685947 +0200 +++ /var/tmp/diff_new_pack.vMFmPa/_new 2024-05-27 12:02:34.044686094 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/docker/compose</param> - <param name="changesrevision">9c0b92259737c0baf886619517c3222626c2a247</param></service></servicedata> + <param name="changesrevision">bf1dd0c267fa4fc63a43fecd62c0919de1cd5db3</param></service></servicedata> (No newline at EOF) ++++++ compose-2.27.0.obscpio -> compose-2.27.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/Dockerfile new/compose-2.27.1/Dockerfile --- old/compose-2.27.0/Dockerfile 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/Dockerfile 2024-05-24 10:58:53.000000000 +0200 @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG GO_VERSION=1.21.9 +ARG GO_VERSION=1.21.10 ARG XX_VERSION=1.2.1 ARG GOLANGCI_LINT_VERSION=v1.55.2 ARG ADDLICENSE_VERSION=v1.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/Makefile new/compose-2.27.1/Makefile --- old/compose-2.27.0/Makefile 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/Makefile 2024-05-24 10:58:53.000000000 +0200 @@ -90,7 +90,7 @@ .PHONY: mocks mocks: - mockgen --version >/dev/null 2>&1 || go install go.uber.org/mock/mockgen@v0.3.0 + mockgen --version >/dev/null 2>&1 || go install go.uber.org/mock/mockgen@v0.4.0 mockgen -destination pkg/mocks/mock_docker_cli.go -package mocks github.com/docker/cli/cli/command Cli mockgen -destination pkg/mocks/mock_docker_api.go -package mocks github.com/docker/docker/client APIClient mockgen -destination pkg/mocks/mock_docker_compose_api.go -package mocks -source=./pkg/api/api.go Service diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/cmd/cmdtrace/cmd_span.go new/compose-2.27.1/cmd/cmdtrace/cmd_span.go --- old/compose-2.27.0/cmd/cmdtrace/cmd_span.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/cmd/cmdtrace/cmd_span.go 2024-05-24 10:58:53.000000000 +0200 @@ -30,6 +30,7 @@ "github.com/docker/compose/v2/internal/tracing" "github.com/spf13/cobra" flag "github.com/spf13/pflag" + "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" @@ -50,7 +51,7 @@ } ctx := cmd.Context() - ctx, cmdSpan := tracing.Tracer.Start( + ctx, cmdSpan := otel.Tracer("").Start( ctx, "cli/"+strings.Join(commandName(cmd), "-"), ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/cmd/compose/compose.go new/compose-2.27.1/cmd/compose/compose.go --- old/compose-2.27.0/cmd/compose/compose.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/cmd/compose/compose.go 2024-05-24 10:58:53.000000000 +0200 @@ -171,7 +171,7 @@ f.StringArrayVar(&o.Profiles, "profile", []string{}, "Specify a profile to enable") f.StringVarP(&o.ProjectName, "project-name", "p", "", "Project name") f.StringArrayVarP(&o.ConfigPaths, "file", "f", []string{}, "Compose configuration files") - f.StringArrayVar(&o.EnvFiles, "env-file", nil, "Specify an alternate environment file") + f.StringArrayVar(&o.EnvFiles, "env-file", defaultStringArrayVar(ComposeEnvFiles), "Specify an alternate environment file") f.StringVar(&o.ProjectDir, "project-directory", "", "Specify an alternate working directory\n(default: the path of the, first specified, Compose file)") f.StringVar(&o.WorkDir, "workdir", "", "DEPRECATED! USE --project-directory INSTEAD.\nSpecify an alternate working directory\n(default: the path of the, first specified, Compose file)") f.BoolVar(&o.Compatibility, "compatibility", false, "Run compose in backward compatibility mode") @@ -180,6 +180,13 @@ _ = f.MarkHidden("workdir") } +// get default value for a command line flag that is set by a coma-separated value in environment variable +func defaultStringArrayVar(env string) []string { + return strings.FieldsFunc(os.Getenv(env), func(c rune) bool { + return c == ',' + }) +} + func (o *ProjectOptions) projectOrName(ctx context.Context, dockerCli command.Cli, services ...string) (*types.Project, string, error) { name := o.ProjectName var project *types.Project @@ -384,7 +391,7 @@ ctx := cmd.Context() // (1) process env vars - err := setEnvWithDotEnv(&opts) + err := setEnvWithLocalDotEnv(&opts) if err != nil { return err } @@ -594,18 +601,29 @@ return c } -func setEnvWithDotEnv(prjOpts *ProjectOptions) error { - if len(prjOpts.EnvFiles) == 0 { - if envFiles := os.Getenv(ComposeEnvFiles); envFiles != "" { - prjOpts.EnvFiles = strings.Split(envFiles, ",") - } +// If user has a local .env file, load it as os.environment so it can be used to set COMPOSE_ variables +// This also allows to override values set by the default .env in a compose project when ran from a distinct folder +func setEnvWithLocalDotEnv(prjOpts *ProjectOptions) error { + if len(prjOpts.EnvFiles) > 0 { + return nil } - options, err := prjOpts.toProjectOptions() + + wd, err := os.Getwd() if err != nil { return compose.WrapComposeError(err) } - envFromFile, err := dotenv.GetEnvFromFile(composegoutils.GetAsEqualsMap(os.Environ()), options.EnvFiles) + defaultDotEnv := filepath.Join(wd, ".env") + + s, err := os.Stat(defaultDotEnv) + if os.IsNotExist(err) || s.IsDir() { + return nil + } + if err != nil { + return err + } + + envFromFile, err := dotenv.GetEnvFromFile(composegoutils.GetAsEqualsMap(os.Environ()), []string{defaultDotEnv}) if err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/cmd/compose/config.go new/compose-2.27.1/cmd/compose/config.go --- old/compose-2.27.0/cmd/compose/config.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/cmd/compose/config.go 2024-05-24 10:58:53.000000000 +0200 @@ -143,47 +143,15 @@ return cmd } -func runConfig(ctx context.Context, dockerCli command.Cli, opts configOptions, services []string) error { +func runConfig(ctx context.Context, dockerCli command.Cli, opts configOptions, services []string) (err error) { var content []byte if opts.noInterpolate { - // we can't use ToProject, so the model we render here is only partially resolved - model, err := opts.ToModel(ctx, dockerCli, services) - if err != nil { - return err - } - - if opts.resolveImageDigests { - err = resolveImageDigests(ctx, dockerCli, model) - if err != nil { - return err - } - } - - content, err = formatModel(model, opts.Format) + content, err = runConfigNoInterpolate(ctx, dockerCli, opts, services) if err != nil { return err } } else { - project, err := opts.ToProject(ctx, dockerCli, services) - if err != nil { - return err - } - - if !opts.noConsistency { - err := project.CheckContainerNameUnicity() - if err != nil { - return err - } - } - - switch opts.Format { - case "json": - content, err = project.MarshalJSON() - case "yaml": - content, err = project.MarshalYAML() - default: - return fmt.Errorf("unsupported format %q", opts.Format) - } + content, err = runConfigInterpolate(ctx, dockerCli, opts, services) if err != nil { return err } @@ -200,10 +168,62 @@ if opts.Output != "" && len(content) > 0 { return os.WriteFile(opts.Output, content, 0o666) } - _, err := fmt.Fprint(dockerCli.Out(), string(content)) + _, err = fmt.Fprint(dockerCli.Out(), string(content)) return err } +func runConfigInterpolate(ctx context.Context, dockerCli command.Cli, opts configOptions, services []string) ([]byte, error) { + project, err := opts.ToProject(ctx, dockerCli, services) + if err != nil { + return nil, err + } + + if opts.resolveImageDigests { + project, err = project.WithImagesResolved(compose.ImageDigestResolver(ctx, dockerCli.ConfigFile(), dockerCli.Client())) + if err != nil { + return nil, err + } + } + + if !opts.noConsistency { + err := project.CheckContainerNameUnicity() + if err != nil { + return nil, err + } + } + + var content []byte + switch opts.Format { + case "json": + content, err = project.MarshalJSON() + case "yaml": + content, err = project.MarshalYAML() + default: + return nil, fmt.Errorf("unsupported format %q", opts.Format) + } + if err != nil { + return nil, err + } + return content, nil +} + +func runConfigNoInterpolate(ctx context.Context, dockerCli command.Cli, opts configOptions, services []string) ([]byte, error) { + // we can't use ToProject, so the model we render here is only partially resolved + model, err := opts.ToModel(ctx, dockerCli, services) + if err != nil { + return nil, err + } + + if opts.resolveImageDigests { + err = resolveImageDigests(ctx, dockerCli, model) + if err != nil { + return nil, err + } + } + + return formatModel(model, opts.Format) +} + func resolveImageDigests(ctx context.Context, dockerCli command.Cli, model map[string]any) (err error) { // create a pseudo-project so we can rely on WithImagesResolved to resolve images p := &types.Project{ @@ -342,6 +362,7 @@ if err != nil { return err } + for _, s := range project.Services { fmt.Fprintln(dockerCli.Out(), api.GetImageNameOrDefault(s, project.Name)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/cmd/compose/up.go new/compose-2.27.1/cmd/compose/up.go --- old/compose-2.27.0/cmd/compose/up.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/cmd/compose/up.go 2024-05-24 10:58:53.000000000 +0200 @@ -164,8 +164,7 @@ flags.BoolVar(&up.wait, "wait", false, "Wait for services to be running|healthy. Implies detached mode.") flags.IntVar(&up.waitTimeout, "wait-timeout", 0, "Maximum duration to wait for the project to be running|healthy") flags.BoolVarP(&up.watch, "watch", "w", false, "Watch source code and rebuild/refresh containers when files are updated.") - flags.BoolVar(&up.navigationMenu, "menu", false, "Enable interactive shortcuts when running attached (Experimental). Incompatible with --detach.") - flags.MarkHidden("menu") //nolint:errcheck + flags.BoolVar(&up.navigationMenu, "menu", false, "Enable interactive shortcuts when running attached. Incompatible with --detach. Can also be enable/disable by setting COMPOSE_MENU environment var.") return upCmd } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/cmd/formatter/shortcut.go new/compose-2.27.1/cmd/formatter/shortcut.go --- old/compose-2.27.0/cmd/formatter/shortcut.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/cmd/formatter/shortcut.go 2024-05-24 10:58:53.000000000 +0200 @@ -106,6 +106,7 @@ Watch KeyboardWatch IsDockerDesktopActive bool IsWatchConfigured bool + IsDDComposeUIActive bool logLevel KEYBOARD_LOG_LEVEL signalChannel chan<- os.Signal } @@ -113,7 +114,7 @@ var KeyboardManager *LogKeyboard var eg multierror.Group -func NewKeyboardManager(ctx context.Context, isDockerDesktopActive, isWatchConfigured bool, +func NewKeyboardManager(ctx context.Context, isDockerDesktopActive, isWatchConfigured, isDockerDesktopConfigActive bool, sc chan<- os.Signal, watchFn func(ctx context.Context, project *types.Project, @@ -124,6 +125,7 @@ km := LogKeyboard{} km.IsDockerDesktopActive = isDockerDesktopActive km.IsWatchConfigured = isWatchConfigured + km.IsDDComposeUIActive = isDockerDesktopConfigActive km.logLevel = INFO km.Watch.Watching = false @@ -192,8 +194,16 @@ if lk.IsDockerDesktopActive { openDDInfo = shortcutKeyColor("v") + navColor(" View in Docker Desktop") } - var watchInfo string + + var openDDUI string if openDDInfo != "" { + openDDUI = navColor(" ") + } + if lk.IsDDComposeUIActive { + openDDUI = openDDUI + shortcutKeyColor("o") + navColor(" View Config") + } + var watchInfo string + if openDDInfo != "" || openDDUI != "" { watchInfo = navColor(" ") } var isEnabled = " Enable" @@ -201,7 +211,7 @@ isEnabled = " Disable" } watchInfo = watchInfo + shortcutKeyColor("w") + navColor(isEnabled+" Watch") - return openDDInfo + watchInfo + return openDDInfo + openDDUI + watchInfo } func (lk *LogKeyboard) clearNavigationMenu() { @@ -234,6 +244,23 @@ ) } +func (lk *LogKeyboard) openDDComposeUI(ctx context.Context, project *types.Project) { + if !lk.IsDDComposeUIActive { + return + } + eg.Go(tracing.EventWrapFuncForErrGroup(ctx, "menu/gui/composeview", tracing.SpanOptions{}, + func(ctx context.Context) error { + link := fmt.Sprintf("docker-desktop://dashboard/docker-compose/%s", project.Name) + err := open.Run(link) + if err != nil { + err = fmt.Errorf("Could not open Docker Desktop Compose UI") + lk.keyboardError("View Config", err) + } + return err + }), + ) +} + func (lk *LogKeyboard) keyboardError(prefix string, err error) { lk.kError.addError(prefix, err) @@ -284,6 +311,8 @@ lk.openDockerDesktop(ctx, project) case 'w': lk.StartWatch(ctx, project, options) + case 'o': + lk.openDDComposeUI(ctx, project) } switch key := event.Key; key { case keyboard.KeyCtrlC: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/docs/reference/compose.md new/compose-2.27.1/docs/reference/compose.md --- old/compose-2.27.0/docs/reference/compose.md 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/docs/reference/compose.md 2024-05-24 10:58:53.000000000 +0200 @@ -177,6 +177,9 @@ Setting the `COMPOSE_IGNORE_ORPHANS` environment variable to `true` stops docker compose from detecting orphaned containers for the project. +Setting the `COMPOSE_MENU` environment variable to `false` disables the helper menu when running `docker compose up` +in attached mode. Alternatively, you can also run `docker compose up --menu=false` to disable the helper menu. + ### Use Dry Run mode to test your command Use `--dry-run` flag to test a command without changing your application stack state. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/docs/reference/compose_up.md new/compose-2.27.1/docs/reference/compose_up.md --- old/compose-2.27.0/docs/reference/compose_up.md 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/docs/reference/compose_up.md 2024-05-24 10:58:53.000000000 +0200 @@ -5,35 +5,36 @@ ### Options -| Name | Type | Default | Description | -|:-------------------------------|:--------------|:---------|:--------------------------------------------------------------------------------------------------------| -| `--abort-on-container-exit` | | | Stops all containers if any container was stopped. Incompatible with -d | -| `--abort-on-container-failure` | | | Stops all containers if any container exited with failure. Incompatible with -d | -| `--always-recreate-deps` | | | Recreate dependent containers. Incompatible with --no-recreate. | -| `--attach` | `stringArray` | | Restrict attaching to the specified services. Incompatible with --attach-dependencies. | -| `--attach-dependencies` | | | Automatically attach to log output of dependent services | -| `--build` | | | Build images before starting containers | -| `-d`, `--detach` | | | Detached mode: Run containers in the background | -| `--dry-run` | | | Execute command in dry run mode | -| `--exit-code-from` | `string` | | Return the exit code of the selected service container. Implies --abort-on-container-exit | -| `--force-recreate` | | | Recreate containers even if their configuration and image haven't changed | -| `--no-attach` | `stringArray` | | Do not attach (stream logs) to the specified services | -| `--no-build` | | | Don't build an image, even if it's policy | -| `--no-color` | | | Produce monochrome output | -| `--no-deps` | | | Don't start linked services | -| `--no-log-prefix` | | | Don't print prefix in logs | -| `--no-recreate` | | | If containers already exist, don't recreate them. Incompatible with --force-recreate. | -| `--no-start` | | | Don't start the services after creating them | -| `--pull` | `string` | `policy` | Pull image before running ("always"\|"missing"\|"never") | -| `--quiet-pull` | | | Pull without printing progress information | -| `--remove-orphans` | | | Remove containers for services not defined in the Compose file | -| `-V`, `--renew-anon-volumes` | | | Recreate anonymous volumes instead of retrieving data from the previous containers | -| `--scale` | `stringArray` | | Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present. | -| `-t`, `--timeout` | `int` | `0` | Use this timeout in seconds for container shutdown when attached or when containers are already running | -| `--timestamps` | | | Show timestamps | -| `--wait` | | | Wait for services to be running\|healthy. Implies detached mode. | -| `--wait-timeout` | `int` | `0` | Maximum duration to wait for the project to be running\|healthy | -| `-w`, `--watch` | | | Watch source code and rebuild/refresh containers when files are updated. | +| Name | Type | Default | Description | +|:-------------------------------|:--------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------| +| `--abort-on-container-exit` | | | Stops all containers if any container was stopped. Incompatible with -d | +| `--abort-on-container-failure` | | | Stops all containers if any container exited with failure. Incompatible with -d | +| `--always-recreate-deps` | | | Recreate dependent containers. Incompatible with --no-recreate. | +| `--attach` | `stringArray` | | Restrict attaching to the specified services. Incompatible with --attach-dependencies. | +| `--attach-dependencies` | | | Automatically attach to log output of dependent services | +| `--build` | | | Build images before starting containers | +| `-d`, `--detach` | | | Detached mode: Run containers in the background | +| `--dry-run` | | | Execute command in dry run mode | +| `--exit-code-from` | `string` | | Return the exit code of the selected service container. Implies --abort-on-container-exit | +| `--force-recreate` | | | Recreate containers even if their configuration and image haven't changed | +| `--menu` | | | Enable interactive shortcuts when running attached. Incompatible with --detach. Can also be enable/disable by setting COMPOSE_MENU environment var. | +| `--no-attach` | `stringArray` | | Do not attach (stream logs) to the specified services | +| `--no-build` | | | Don't build an image, even if it's policy | +| `--no-color` | | | Produce monochrome output | +| `--no-deps` | | | Don't start linked services | +| `--no-log-prefix` | | | Don't print prefix in logs | +| `--no-recreate` | | | If containers already exist, don't recreate them. Incompatible with --force-recreate. | +| `--no-start` | | | Don't start the services after creating them | +| `--pull` | `string` | `policy` | Pull image before running ("always"\|"missing"\|"never") | +| `--quiet-pull` | | | Pull without printing progress information | +| `--remove-orphans` | | | Remove containers for services not defined in the Compose file | +| `-V`, `--renew-anon-volumes` | | | Recreate anonymous volumes instead of retrieving data from the previous containers | +| `--scale` | `stringArray` | | Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present. | +| `-t`, `--timeout` | `int` | `0` | Use this timeout in seconds for container shutdown when attached or when containers are already running | +| `--timestamps` | | | Show timestamps | +| `--wait` | | | Wait for services to be running\|healthy. Implies detached mode. | +| `--wait-timeout` | `int` | `0` | Maximum duration to wait for the project to be running\|healthy | +| `-w`, `--watch` | | | Watch source code and rebuild/refresh containers when files are updated. | <!---MARKER_GEN_END--> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/docs/reference/docker_compose.yaml new/compose-2.27.1/docs/reference/docker_compose.yaml --- old/compose-2.27.0/docs/reference/docker_compose.yaml 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/docs/reference/docker_compose.yaml 2024-05-24 10:58:53.000000000 +0200 @@ -118,6 +118,9 @@ Setting the `COMPOSE_IGNORE_ORPHANS` environment variable to `true` stops docker compose from detecting orphaned containers for the project. + Setting the `COMPOSE_MENU` environment variable to `false` disables the helper menu when running `docker compose up` + in attached mode. Alternatively, you can also run `docker compose up --menu=false` to disable the helper menu. + ### Use Dry Run mode to test your command Use `--dry-run` flag to test a command without changing your application stack state. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/docs/reference/docker_compose_up.yaml new/compose-2.27.1/docs/reference/docker_compose_up.yaml --- old/compose-2.27.0/docs/reference/docker_compose_up.yaml 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/docs/reference/docker_compose_up.yaml 2024-05-24 10:58:53.000000000 +0200 @@ -123,9 +123,9 @@ value_type: bool default_value: "false" description: | - Enable interactive shortcuts when running attached (Experimental). Incompatible with --detach. + Enable interactive shortcuts when running attached. Incompatible with --detach. Can also be enable/disable by setting COMPOSE_MENU environment var. deprecated: false - hidden: true + hidden: false experimental: false experimentalcli: false kubernetes: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/go.mod new/compose-2.27.1/go.mod --- old/compose-2.27.0/go.mod 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/go.mod 2024-05-24 10:58:53.000000000 +0200 @@ -7,19 +7,19 @@ github.com/Microsoft/go-winio v0.6.2 github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d github.com/buger/goterm v1.0.4 - github.com/compose-spec/compose-go/v2 v2.1.0 + github.com/compose-spec/compose-go/v2 v2.1.1 github.com/containerd/console v1.0.4 - github.com/containerd/containerd v1.7.15 + github.com/containerd/containerd v1.7.17 github.com/davecgh/go-spew v1.1.1 github.com/distribution/reference v0.6.0 - github.com/docker/buildx v0.14.0 - github.com/docker/cli v26.1.0+incompatible + github.com/docker/buildx v0.14.1 + github.com/docker/cli v26.1.3+incompatible github.com/docker/cli-docs-tool v0.7.0 - github.com/docker/docker v26.1.0+incompatible + github.com/docker/docker v26.1.3+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 - github.com/fsnotify/fsevents v0.1.1 + github.com/fsnotify/fsevents v0.2.0 github.com/google/go-cmp v0.6.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-version v1.6.0 @@ -27,7 +27,7 @@ github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/go-ps v1.0.0 github.com/mitchellh/mapstructure v1.5.0 - github.com/moby/buildkit v0.13.1 + github.com/moby/buildkit v0.13.2 github.com/moby/patternmatcher v0.6.0 github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 @@ -46,14 +46,14 @@ go.opentelemetry.io/otel v1.21.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 + go.opentelemetry.io/otel/metric v1.21.0 go.opentelemetry.io/otel/sdk v1.21.0 - go.opentelemetry.io/otel/sdk/metric v1.21.0 go.opentelemetry.io/otel/trace v1.21.0 go.uber.org/goleak v1.3.0 go.uber.org/mock v0.4.0 golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 golang.org/x/sync v0.7.0 - golang.org/x/sys v0.19.0 + golang.org/x/sys v0.20.0 google.golang.org/grpc v1.59.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.1 @@ -64,7 +64,7 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/Microsoft/hcsshim v0.11.5 // indirect github.com/aws/aws-sdk-go-v2 v1.24.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect @@ -83,7 +83,7 @@ github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/containerd/ttrpc v1.2.3 // indirect + github.com/containerd/ttrpc v1.2.4 // indirect github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.0 // indirect @@ -150,7 +150,7 @@ github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5 // indirect + github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c // indirect github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // indirect github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect @@ -163,7 +163,7 @@ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect @@ -189,5 +189,5 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect - tags.cncf.io/container-device-interface v0.6.2 // indirect + tags.cncf.io/container-device-interface v0.7.2 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/go.sum new/compose-2.27.1/go.sum --- old/compose-2.27.0/go.sum 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/go.sum 2024-05-24 10:58:53.000000000 +0200 @@ -20,8 +20,8 @@ github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= +github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= @@ -90,14 +90,14 @@ github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= -github.com/compose-spec/compose-go/v2 v2.1.0 h1:qdW2qISQlCQG8v1O2TChcdxgAWTUGgUX/CPSO+ES9+E= -github.com/compose-spec/compose-go/v2 v2.1.0/go.mod h1:bEPizBkIojlQ20pi2vNluBa58tevvj0Y18oUSHPyfdc= +github.com/compose-spec/compose-go/v2 v2.1.1 h1:tKuYJwAVgxIryRrsvWJSf1kNviVOQVVqwyHsV6YoIUc= +github.com/compose-spec/compose-go/v2 v2.1.1/go.mod h1:bEPizBkIojlQ20pi2vNluBa58tevvj0Y18oUSHPyfdc= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= -github.com/containerd/containerd v1.7.15 h1:afEHXdil9iAm03BmhjzKyXnnEBtjaLJefdU7DV0IFes= -github.com/containerd/containerd v1.7.15/go.mod h1:ISzRRTMF8EXNpJlTzyr2XMhN+j9K302C21/+cr3kUnY= +github.com/containerd/containerd v1.7.17 h1:KjNnn0+tAVQHAoaWRjmdak9WlvnFR/8rU1CHHy8Rm2A= +github.com/containerd/containerd v1.7.17/go.mod h1:vK+hhT4TIv2uejlcDlbVIc8+h/BqtKLIyNrtCZol8lI= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= @@ -109,8 +109,8 @@ github.com/containerd/stargz-snapshotter v0.15.1 h1:fpsP4kf/Z4n2EYnU0WT8ZCE3eiKDwikDhL6VwxIlgeA= github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= -github.com/containerd/ttrpc v1.2.3 h1:4jlhbXIGvijRtNC8F/5CpuJZ7yKOBFGFOOXg1bkISz0= -github.com/containerd/ttrpc v1.2.3/go.mod h1:ieWsXucbb8Mj9PH0rXCw1i8IunRbbAiDkpXkbfflWBM= +github.com/containerd/ttrpc v1.2.4 h1:eQCQK4h9dxDmpOb9QOOMh2NHTfzroH1IkmHiKZi05Oo= +github.com/containerd/ttrpc v1.2.4/go.mod h1:ojvb8SJBSch0XkqNO0L0YX/5NxR3UnVk2LzFKBK0upc= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -124,17 +124,17 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/buildx v0.14.0 h1:FxqcfE7xgeEC4oQlKLpuvfobRDVDXrHE3jByM+mdyqk= -github.com/docker/buildx v0.14.0/go.mod h1:Vy/2lC9QsJvo33+7KKkN/GDE5WxnVqW0/dpcN7ZqPJY= -github.com/docker/cli v26.1.0+incompatible h1:+nwRy8Ocd8cYNQ60mozDDICICD8aoFGtlPXifX/UQ3Y= -github.com/docker/cli v26.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/buildx v0.14.1 h1:Pr3HdtHoDsCghlIExgGp0WOIgvbiViushOKIPUIyFI4= +github.com/docker/buildx v0.14.1/go.mod h1:s6xxLYXZIWnkdYpSvxRmoqZTb1vViV9q2f+Hg8cWA3Y= +github.com/docker/cli v26.1.3+incompatible h1:bUpXT/N0kDE3VUHI2r5VMsYQgi38kYuoC0oL9yt3lqc= +github.com/docker/cli v26.1.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli-docs-tool v0.7.0 h1:M2Da98Unz2kz3A5d4yeSGbhyOge2mfYSNjAFt01Rw0M= github.com/docker/cli-docs-tool v0.7.0/go.mod h1:zMjqTFCU361PRh8apiXzeAZ1Q/xupbIwTusYpzCXS/o= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v26.1.0+incompatible h1:W1G9MPNbskA6VZWL7b3ZljTh0pXI68FpINx0GKaOdaM= -github.com/docker/docker v26.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v26.1.3+incompatible h1:lLCzRbrVZrljpVNobJu1J2FHk8V0s4BawoZippkc+xo= +github.com/docker/docker v26.1.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= @@ -165,8 +165,8 @@ github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsevents v0.1.1 h1:/125uxJvvoSDDBPen6yUZbil8J9ydKZnnl3TWWmvnkw= -github.com/fsnotify/fsevents v0.1.1/go.mod h1:+d+hS27T6k5J8CRaPLKFgwKYcpS7GwW3Ule9+SC2ZRc= +github.com/fsnotify/fsevents v0.2.0 h1:BRlvlqjvNTfogHfeBOFvSC9N0Ddy+wzQCQukyoD7o/c= +github.com/fsnotify/fsevents v0.2.0/go.mod h1:B3eEk39i4hz8y1zaWS/wPrAP4O6wkIl7HQwKBr1qH/w= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= @@ -329,8 +329,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/buildkit v0.13.1 h1:L8afOFhPq2RPJJSr/VyzbufwID7jquZVB7oFHbPRcPE= -github.com/moby/buildkit v0.13.1/go.mod h1:aNmNQKLBFYAOFuzQjR3VA27/FijlvtBD1pjNwTSN37k= +github.com/moby/buildkit v0.13.2 h1:nXNszM4qD9E7QtG7bFWPnDI1teUQFQglBzon/IU3SzI= +github.com/moby/buildkit v0.13.2/go.mod h1:2cyVOv9NoHM7arphK9ZfHIWKn9YVZRFd1wXB8kKmEzY= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= @@ -477,8 +477,8 @@ github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375/go.mod h1:xRroudyp5iVtxKqZCrA6n2TLFRBf8bmnjr1UD4x+z7g= -github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5 h1:oZS8KCqAg62sxJkEq/Ppzqrb6EooqzWtL8Oaex7bc5c= -github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5/go.mod h1:vbbYqJlnswsbJqWUcJN8fKtBhnEgldDrcagTgnBVKKM= +github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c h1:+6wg/4ORAbnSoGDzg2Q1i3CeMcT/jjhye/ZfnBHy7/M= +github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c/go.mod h1:vbbYqJlnswsbJqWUcJN8fKtBhnEgldDrcagTgnBVKKM= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531 h1:Y/M5lygoNPKwVNLMPXgVfsRT40CSFKXCxuU8LoHySjs= @@ -609,8 +609,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -715,5 +715,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -tags.cncf.io/container-device-interface v0.6.2 h1:dThE6dtp/93ZDGhqaED2Pu374SOeUkBfuvkLuiTdwzg= -tags.cncf.io/container-device-interface v0.6.2/go.mod h1:Shusyhjs1A5Na/kqPVLL0KqnHQHuunol9LFeUNkuGVE= +tags.cncf.io/container-device-interface v0.7.2 h1:MLqGnWfOr1wB7m08ieI4YJ3IoLKKozEnnNYBtacDPQU= +tags.cncf.io/container-device-interface v0.7.2/go.mod h1:Xb1PvXv2BhfNb3tla4r9JL129ck1Lxv9KuU6eVOfKto= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/internal/experimental/experimental.go new/compose-2.27.1/internal/experimental/experimental.go --- old/compose-2.27.0/internal/experimental/experimental.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/internal/experimental/experimental.go 2024-05-24 10:58:53.000000000 +0200 @@ -71,6 +71,10 @@ return s.determineFeatureState("ComposeNav") } +func (s *State) ComposeUI() bool { + return s.determineFeatureState("ComposeUIView") +} + func (s *State) determineFeatureState(name string) bool { if s == nil || !s.active || s.desktopValues == nil { return false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/internal/locker/runtime_unix.go new/compose-2.27.1/internal/locker/runtime_unix.go --- old/compose-2.27.0/internal/locker/runtime_unix.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/internal/locker/runtime_unix.go 2024-05-24 10:58:53.000000000 +0200 @@ -1,4 +1,4 @@ -//go:build linux +//go:build linux || openbsd /* Copyright 2020 Docker Compose CLI authors diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/internal/tracing/keyboard_metrics.go new/compose-2.27.1/internal/tracing/keyboard_metrics.go --- old/compose-2.27.0/internal/tracing/keyboard_metrics.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/internal/tracing/keyboard_metrics.go 2024-05-24 10:58:53.000000000 +0200 @@ -22,7 +22,7 @@ "go.opentelemetry.io/otel/attribute" ) -func KeyboardMetrics(ctx context.Context, enabled, isDockerDesktopActive, isWatchConfigured bool) { +func KeyboardMetrics(ctx context.Context, enabled, isDockerDesktopActive, isWatchConfigured, isDockerDesktopComposeUI bool) { commandAvailable := []string{} if isDockerDesktopActive { commandAvailable = append(commandAvailable, "gui") @@ -30,6 +30,11 @@ if isWatchConfigured { commandAvailable = append(commandAvailable, "watch") } + + if isDockerDesktopComposeUI { + commandAvailable = append(commandAvailable, "gui/composeview") + } + AddAttributeToSpan(ctx, attribute.Bool("navmenu.enabled", enabled), attribute.StringSlice("navmenu.command_available", commandAvailable)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/internal/tracing/tracing.go new/compose-2.27.1/internal/tracing/tracing.go --- old/compose-2.27.0/internal/tracing/tracing.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/internal/tracing/tracing.go 2024-05-24 10:58:53.000000000 +0200 @@ -21,7 +21,6 @@ "errors" "fmt" "os" - "strconv" "strings" "github.com/docker/compose/v2/internal" @@ -46,8 +45,6 @@ otel.SetErrorHandler(skipErrors{}) } -var Tracer = otel.Tracer("compose") - // OTLPConfig contains the necessary values to initialize an OTLP client // manually. // @@ -66,11 +63,6 @@ func InitTracing(dockerCli command.Cli) (ShutdownFunc, error) { // set global propagator to tracecontext (the default is no-op). otel.SetTextMapPropagator(propagation.TraceContext{}) - - if v, _ := strconv.ParseBool(os.Getenv("COMPOSE_EXPERIMENTAL_OTEL")); !v { - return nil, nil - } - return InitProvider(dockerCli) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/internal/tracing/wrap.go new/compose-2.27.1/internal/tracing/wrap.go --- old/compose-2.27.0/internal/tracing/wrap.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/internal/tracing/wrap.go 2024-05-24 10:58:53.000000000 +0200 @@ -20,6 +20,7 @@ "context" "github.com/acarl005/stripansi" + "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" semconv "go.opentelemetry.io/otel/semconv/v1.19.0" @@ -36,7 +37,7 @@ // adding even more levels of function wrapping/indirection. func SpanWrapFunc(spanName string, opts SpanOptions, fn func(ctx context.Context) error) func(context.Context) error { return func(ctx context.Context) error { - ctx, span := Tracer.Start(ctx, spanName, opts.SpanStartOptions()...) + ctx, span := otel.Tracer("").Start(ctx, spanName, opts.SpanStartOptions()...) defer span.End() if err := fn(ctx); err != nil { @@ -59,7 +60,7 @@ // adding even more levels of function wrapping/indirection. func SpanWrapFuncForErrGroup(ctx context.Context, spanName string, opts SpanOptions, fn func(ctx context.Context) error) func() error { return func() error { - ctx, span := Tracer.Start(ctx, spanName, opts.SpanStartOptions()...) + ctx, span := otel.Tracer("").Start(ctx, spanName, opts.SpanStartOptions()...) defer span.End() if err := fn(ctx); err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/compose/compose.go new/compose-2.27.1/pkg/compose/compose.go --- old/compose-2.27.0/pkg/compose/compose.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/compose/compose.go 2024-05-24 10:58:53.000000000 +0200 @@ -324,3 +324,10 @@ func (s *composeService) isDesktopIntegrationActive() bool { return s.desktopCli != nil } + +func (s *composeService) isDesktopUIEnabled() bool { + if !s.isDesktopIntegrationActive() { + return false + } + return s.experiments.ComposeUI() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/compose/create.go new/compose-2.27.1/pkg/compose/create.go --- old/compose-2.27.0/pkg/compose/create.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/compose/create.go 2024-05-24 10:58:53.000000000 +0200 @@ -439,6 +439,7 @@ ipv4Address string ipv6Address string macAddress string + driverOpts types.Options ) if config != nil { ipv4Address = config.Ipv4Address @@ -449,6 +450,7 @@ LinkLocalIPs: config.LinkLocalIPs, } macAddress = config.MacAddress + driverOpts = config.DriverOpts } return &network.EndpointSettings{ Aliases: getAliases(p, service, serviceIndex, networkKey, useNetworkAliases), @@ -457,6 +459,7 @@ IPv6Gateway: ipv6Address, IPAMConfig: ipam, MacAddress: macAddress, + DriverOpts: driverOpts, } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/compose/create_test.go new/compose-2.27.1/pkg/compose/create_test.go --- old/compose-2.27.0/pkg/compose/create_test.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/compose/create_test.go 2024-05-24 10:58:53.000000000 +0200 @@ -25,6 +25,7 @@ "gotest.tools/v3/assert/cmp" "github.com/docker/compose/v2/pkg/api" + "github.com/docker/docker/api/types/network" composetypes "github.com/compose-spec/compose-go/v2/types" moby "github.com/docker/docker/api/types" @@ -275,3 +276,54 @@ assert.Check(t, cmp.Nil(networkConfig)) }) } + +func TestCreateEndpointSettings(t *testing.T) { + eps := createEndpointSettings( + &composetypes.Project{ + Name: "projName", + }, + composetypes.ServiceConfig{ + Name: "serviceName", + ContainerName: "containerName", + Networks: map[string]*composetypes.ServiceNetworkConfig{ + "netName": { + Priority: 100, + Aliases: []string{"alias1", "alias2"}, + Ipv4Address: "10.16.17.18", + Ipv6Address: "fdb4:7a7f:373a:3f0c::42", + LinkLocalIPs: []string{"169.254.10.20"}, + MacAddress: "10:00:00:00:01", + DriverOpts: composetypes.Options{ + "driverOpt1": "optval1", + "driverOpt2": "optval2", + }, + }, + }, + }, + 0, // serviceIndex + "netName", // networkKey + []string{"link1", "link2"}, // links + true, // useNetworkAliases + ) + assert.Check(t, cmp.DeepEqual(eps, &network.EndpointSettings{ + IPAMConfig: &network.EndpointIPAMConfig{ + IPv4Address: "10.16.17.18", + IPv6Address: "fdb4:7a7f:373a:3f0c::42", + LinkLocalIPs: []string{"169.254.10.20"}, + }, + Links: []string{"link1", "link2"}, + Aliases: []string{"containerName", "serviceName", "alias1", "alias2"}, + MacAddress: "10:00:00:00:01", + DriverOpts: map[string]string{ + "driverOpt1": "optval1", + "driverOpt2": "optval2", + }, + + // FIXME(robmry) - IPAddress and IPv6Gateway are "operational data" fields... + // - The IPv6 address here is the container's address, not the gateway. + // - Both fields will be cleared by the daemon, but they could be removed from + // the request. + IPAddress: "10.16.17.18", + IPv6Gateway: "fdb4:7a7f:373a:3f0c::42", + })) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/compose/pull.go new/compose-2.27.1/pkg/compose/pull.go --- old/compose-2.27.0/pkg/compose/pull.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/compose/pull.go 2024-05-24 10:58:53.000000000 +0200 @@ -264,7 +264,8 @@ } inspect, err := apiClient.DistributionInspect(ctx, named.String(), auth) if err != nil { - return "", err + return "", + fmt.Errorf("failed ot resolve digest for %s: %w", named.String(), err) } return inspect.Descriptor.Digest, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/compose/up.go new/compose-2.27.1/pkg/compose/up.go --- old/compose-2.27.0/pkg/compose/up.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/compose/up.go 2024-05-24 10:58:53.000000000 +0200 @@ -97,9 +97,10 @@ } else { isWatchConfigured := s.shouldWatch(project) isDockerDesktopActive := s.isDesktopIntegrationActive() - tracing.KeyboardMetrics(ctx, options.Start.NavigationMenu, isDockerDesktopActive, isWatchConfigured) + isDockerDesktopComposeUI := s.isDesktopUIEnabled() + tracing.KeyboardMetrics(ctx, options.Start.NavigationMenu, isDockerDesktopActive, isWatchConfigured, isDockerDesktopComposeUI) - formatter.NewKeyboardManager(ctx, isDockerDesktopActive, isWatchConfigured, signalChan, s.Watch) + formatter.NewKeyboardManager(ctx, isDockerDesktopActive, isWatchConfigured, isDockerDesktopComposeUI, signalChan, s.Watch) if options.Start.Watch { formatter.KeyboardManager.StartWatch(ctx, project, options) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/compose_environment_test.go new/compose-2.27.1/pkg/e2e/compose_environment_test.go --- old/compose-2.27.0/pkg/e2e/compose_environment_test.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/e2e/compose_environment_test.go 2024-05-24 10:58:53.000000000 +0200 @@ -117,7 +117,8 @@ "run", "--rm", "-e", "WHEREAMI", "env-compose-priority") cmd.Env = append(cmd.Env, "COMPOSE_ENV_FILES=./fixtures/environment/env-priority/.env.override.with.default") res := icmd.RunCmd(cmd) - assert.Equal(t, strings.TrimSpace(res.Stdout()), "EnvFileDefaultValue") + stdout := res.Stdout() + assert.Equal(t, strings.TrimSpace(stdout), "EnvFileDefaultValue") }) // No Compose file and env variable pass to the run command diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/compose_test.go new/compose-2.27.1/pkg/e2e/compose_test.go --- old/compose-2.27.0/pkg/e2e/compose_test.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/e2e/compose_test.go 2024-05-24 10:58:53.000000000 +0200 @@ -329,3 +329,24 @@ Out: "image: backend:latest", }) } + +func TestNestedDotEnv(t *testing.T) { + c := NewCLI(t) + + cmd := c.NewDockerComposeCmd(t, "run", "echo") + cmd.Dir = filepath.Join(".", "fixtures", "nested") + res := icmd.RunCmd(cmd) + res.Assert(t, icmd.Expected{ + ExitCode: 0, + Out: "root win=root", + }) + + cmd = c.NewDockerComposeCmd(t, "run", "echo") + cmd.Dir = filepath.Join(".", "fixtures", "nested", "sub") + res = icmd.RunCmd(cmd) + res.Assert(t, icmd.Expected{ + ExitCode: 0, + Out: "root sub win=sub", + }) + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/fixtures/environment/env-priority/compose.yaml new/compose-2.27.1/pkg/e2e/fixtures/environment/env-priority/compose.yaml --- old/compose-2.27.0/pkg/e2e/fixtures/environment/env-priority/compose.yaml 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/e2e/fixtures/environment/env-priority/compose.yaml 2024-05-24 10:58:53.000000000 +0200 @@ -1,3 +1,5 @@ services: env-compose-priority: image: env-compose-priority + build: + context: . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/fixtures/nested/.env new/compose-2.27.1/pkg/e2e/fixtures/nested/.env --- old/compose-2.27.0/pkg/e2e/fixtures/nested/.env 1970-01-01 01:00:00.000000000 +0100 +++ new/compose-2.27.1/pkg/e2e/fixtures/nested/.env 2024-05-24 10:58:53.000000000 +0200 @@ -0,0 +1,2 @@ +ROOT=root +WIN=root \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/fixtures/nested/compose.yaml new/compose-2.27.1/pkg/e2e/fixtures/nested/compose.yaml --- old/compose-2.27.0/pkg/e2e/fixtures/nested/compose.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/compose-2.27.1/pkg/e2e/fixtures/nested/compose.yaml 2024-05-24 10:58:53.000000000 +0200 @@ -0,0 +1,4 @@ +services: + echo: + image: alpine + command: echo $ROOT $SUB win=$WIN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/e2e/fixtures/nested/sub/.env new/compose-2.27.1/pkg/e2e/fixtures/nested/sub/.env --- old/compose-2.27.0/pkg/e2e/fixtures/nested/sub/.env 1970-01-01 01:00:00.000000000 +0100 +++ new/compose-2.27.1/pkg/e2e/fixtures/nested/sub/.env 2024-05-24 10:58:53.000000000 +0200 @@ -0,0 +1,2 @@ +SUB=sub +WIN=sub diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/mocks/mock_docker_api.go new/compose-2.27.1/pkg/mocks/mock_docker_api.go --- old/compose-2.27.0/pkg/mocks/mock_docker_api.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/mocks/mock_docker_api.go 2024-05-24 10:58:53.000000000 +0200 @@ -5,6 +5,7 @@ // // mockgen -destination pkg/mocks/mock_docker_api.go -package mocks github.com/docker/docker/client APIClient // + // Package mocks is a generated GoMock package. package mocks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/mocks/mock_docker_cli.go new/compose-2.27.1/pkg/mocks/mock_docker_cli.go --- old/compose-2.27.0/pkg/mocks/mock_docker_cli.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/mocks/mock_docker_cli.go 2024-05-24 10:58:53.000000000 +0200 @@ -5,11 +5,11 @@ // // mockgen -destination pkg/mocks/mock_docker_cli.go -package mocks github.com/docker/cli/cli/command Cli // + // Package mocks is a generated GoMock package. package mocks import ( - context "context" io "io" reflect "reflect" @@ -23,9 +23,9 @@ trust "github.com/docker/cli/cli/trust" client0 "github.com/docker/docker/client" client1 "github.com/theupdateframework/notary/client" - metric "go.opentelemetry.io/otel/sdk/metric" + metric "go.opentelemetry.io/otel/metric" resource "go.opentelemetry.io/otel/sdk/resource" - trace "go.opentelemetry.io/otel/sdk/trace" + trace "go.opentelemetry.io/otel/trace" gomock "go.uber.org/mock/gomock" ) @@ -240,22 +240,17 @@ } // MeterProvider mocks base method. -func (m *MockCli) MeterProvider(arg0 context.Context, arg1 ...metric.Option) command.MeterProvider { +func (m *MockCli) MeterProvider() metric.MeterProvider { m.ctrl.T.Helper() - varargs := []any{arg0} - for _, a := range arg1 { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "MeterProvider", varargs...) - ret0, _ := ret[0].(command.MeterProvider) + ret := m.ctrl.Call(m, "MeterProvider") + ret0, _ := ret[0].(metric.MeterProvider) return ret0 } // MeterProvider indicates an expected call of MeterProvider. -func (mr *MockCliMockRecorder) MeterProvider(arg0 any, arg1 ...any) *gomock.Call { +func (mr *MockCliMockRecorder) MeterProvider() *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{arg0}, arg1...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MeterProvider", reflect.TypeOf((*MockCli)(nil).MeterProvider), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MeterProvider", reflect.TypeOf((*MockCli)(nil).MeterProvider)) } // NotaryClient mocks base method. @@ -342,20 +337,15 @@ } // TracerProvider mocks base method. -func (m *MockCli) TracerProvider(arg0 context.Context, arg1 ...trace.TracerProviderOption) command.TracerProvider { +func (m *MockCli) TracerProvider() trace.TracerProvider { m.ctrl.T.Helper() - varargs := []any{arg0} - for _, a := range arg1 { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "TracerProvider", varargs...) - ret0, _ := ret[0].(command.TracerProvider) + ret := m.ctrl.Call(m, "TracerProvider") + ret0, _ := ret[0].(trace.TracerProvider) return ret0 } // TracerProvider indicates an expected call of TracerProvider. -func (mr *MockCliMockRecorder) TracerProvider(arg0 any, arg1 ...any) *gomock.Call { +func (mr *MockCliMockRecorder) TracerProvider() *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{arg0}, arg1...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TracerProvider", reflect.TypeOf((*MockCli)(nil).TracerProvider), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TracerProvider", reflect.TypeOf((*MockCli)(nil).TracerProvider)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/mocks/mock_docker_compose_api.go new/compose-2.27.1/pkg/mocks/mock_docker_compose_api.go --- old/compose-2.27.0/pkg/mocks/mock_docker_compose_api.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/mocks/mock_docker_compose_api.go 2024-05-24 10:58:53.000000000 +0200 @@ -5,6 +5,7 @@ // // mockgen -destination pkg/mocks/mock_docker_compose_api.go -package mocks -source=./pkg/api/api.go Service // + // Package mocks is a generated GoMock package. package mocks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.27.0/pkg/remote/cache_unix.go new/compose-2.27.1/pkg/remote/cache_unix.go --- old/compose-2.27.0/pkg/remote/cache_unix.go 2024-04-24 20:59:42.000000000 +0200 +++ new/compose-2.27.1/pkg/remote/cache_unix.go 2024-05-24 10:58:53.000000000 +0200 @@ -1,4 +1,4 @@ -//go:build linux +//go:build linux || openbsd /* Copyright 2020 Docker Compose CLI authors ++++++ compose.obsinfo ++++++ --- /var/tmp/diff_new_pack.vMFmPa/_old 2024-05-27 12:02:34.304695640 +0200 +++ /var/tmp/diff_new_pack.vMFmPa/_new 2024-05-27 12:02:34.308695787 +0200 @@ -1,5 +1,5 @@ name: compose -version: 2.27.0 -mtime: 1713985182 -commit: 9c0b92259737c0baf886619517c3222626c2a247 +version: 2.27.1 +mtime: 1716541133 +commit: bf1dd0c267fa4fc63a43fecd62c0919de1cd5db3 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz /work/SRC/openSUSE:Factory/.docker-compose.new.24587/vendor.tar.gz differ: char 5, line 1