Print services in dependency order
Currently, `compose config --services` outputs the services in
a random/non-deterministic order.
In Compose v1, this was implicitly topologically sorted because
the project services were pre-sorted. With `compose-go`, the
services are unordered, and the `WithServices()` helper can be
used to iterate in dependency order.
@@ -27,6 +27,7 @@ import (
"github.com/cnabio/cnab-to-oci/remotes"
"github.com/compose-spec/compose-go/cli"
+ "github.com/compose-spec/compose-go/types"
"github.com/distribution/distribution/v3/reference"
cliconfig "github.com/docker/cli/cli/config"
"github.com/opencontainers/go-digest"
@@ -153,10 +154,10 @@ func runServices(opts convertOptions) error {
if err != nil {
return err
}
- for _, s := range project.Services {
+ return project.WithServices(project.ServiceNames(), func(s types.ServiceConfig) error {
fmt.Println(s.Name)
- }
return nil
+ })
}
func runVolumes(opts convertOptions) error {
