MCPcopy
hub / github.com/docker/compose / pullComposeFiles

Method pullComposeFiles

pkg/remote/oci.go:201–235  ·  pkg/remote/oci.go::ociRemoteLoader.pullComposeFiles
(ctx context.Context, local string, manifest spec.Manifest, ref reference.Named, resolver remotes.Resolver)

Source from the content-addressed store, hash-verified

199}
200
201func (g *ociRemoteLoader) pullComposeFiles(ctx context.Context, local string, manifest spec.Manifest, ref reference.Named, resolver remotes.Resolver) error {
202 err := os.MkdirAll(local, 0o700)
203 if err != nil {
204 return err
205 }
206 if (manifest.ArtifactType != "" && manifest.ArtifactType != oci.ComposeProjectArtifactType) ||
207 (manifest.ArtifactType == "" && manifest.Config.MediaType != oci.ComposeEmptyConfigMediaType) {
208 return fmt.Errorf("%s is not a compose project OCI artifact, but %s", ref.String(), manifest.ArtifactType)
209 }
210
211 for i, layer := range manifest.Layers {
212 digested, err := reference.WithDigest(ref, layer.Digest)
213 if err != nil {
214 return err
215 }
216
217 _, content, err := oci.Get(ctx, resolver, digested)
218 if err != nil {
219 return err
220 }
221
222 switch layer.MediaType {
223 case oci.ComposeYAMLMediaType:
224 if err := writeComposeFile(layer, i, local, content); err != nil {
225 return err
226 }
227 case oci.ComposeEnvFileMediaType:
228 if err := writeEnvFile(layer, local, content); err != nil {
229 return err
230 }
231 case oci.ComposeEmptyConfigMediaType:
232 }
233 }
234 return nil
235}
236
237func writeComposeFile(layer spec.Descriptor, i int, local string, content []byte) error {
238 file := "compose.yaml"

Callers 1

LoadMethod · 0.95

Calls 5

GetFunction · 0.92
writeComposeFileFunction · 0.85
writeEnvFileFunction · 0.85
MkdirAllMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected