add dry-run support for publish command

Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
This commit is contained in:
Guillaume Lours 2023-10-05 11:31:56 -07:00 committed by Nicolas De loof
parent a345515f91
commit 2c0b023273
1 changed files with 34 additions and 31 deletions

View File

@ -102,20 +102,22 @@ func (s *composeService) publish(ctx context.Context, project *types.Project, re
Digest: digest.FromBytes(emptyConfig), Digest: digest.FromBytes(emptyConfig),
Size: int64(len(emptyConfig)), Size: int64(len(emptyConfig)),
} }
err = resolver.Push(ctx, named, configDescriptor, emptyConfig) var imageManifest []byte
if err != nil { if !s.dryRun {
return err err = resolver.Push(ctx, named, configDescriptor, emptyConfig)
} if err != nil {
return err
imageManifest, err := json.Marshal(v1.Manifest{ }
Versioned: specs.Versioned{SchemaVersion: 2}, imageManifest, err = json.Marshal(v1.Manifest{
MediaType: v1.MediaTypeImageManifest, Versioned: specs.Versioned{SchemaVersion: 2},
ArtifactType: "application/vnd.docker.compose.project", MediaType: v1.MediaTypeImageManifest,
Config: configDescriptor, ArtifactType: "application/vnd.docker.compose.project",
Layers: layers, Config: configDescriptor,
}) Layers: layers,
if err != nil { })
return err if err != nil {
return err
}
} }
w.Event(progress.Event{ w.Event(progress.Event{
@ -123,23 +125,24 @@ func (s *composeService) publish(ctx context.Context, project *types.Project, re
Text: "publishing", Text: "publishing",
Status: progress.Working, Status: progress.Working,
}) })
if !s.dryRun {
err = resolver.Push(ctx, named, v1.Descriptor{ err = resolver.Push(ctx, named, v1.Descriptor{
MediaType: v1.MediaTypeImageManifest, MediaType: v1.MediaTypeImageManifest,
Digest: digest.FromString(string(imageManifest)), Digest: digest.FromString(string(imageManifest)),
Size: int64(len(imageManifest)), Size: int64(len(imageManifest)),
Annotations: map[string]string{ Annotations: map[string]string{
"com.docker.compose.version": api.ComposeVersion, "com.docker.compose.version": api.ComposeVersion,
}, },
ArtifactType: "application/vnd.docker.compose.project", ArtifactType: "application/vnd.docker.compose.project",
}, imageManifest) }, imageManifest)
if err != nil { if err != nil {
w.Event(progress.Event{ w.Event(progress.Event{
ID: repository, ID: repository,
Text: "publishing", Text: "publishing",
Status: progress.Error, Status: progress.Error,
}) })
return err return err
}
} }
w.Event(progress.Event{ w.Event(progress.Event{
ID: repository, ID: repository,