mirror of
https://github.com/docker/compose.git
synced 2025-07-30 17:14:13 +02:00
extract method to reduce cyclomatic complexity
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
fe8c2780c8
commit
599e4b242a
@ -108,50 +108,57 @@ func (g ociRemoteLoader) Load(ctx context.Context, path string) (string, error)
|
|||||||
local := filepath.Join(g.cache, descriptor.Digest.Hex())
|
local := filepath.Join(g.cache, descriptor.Digest.Hex())
|
||||||
composeFile := filepath.Join(local, "compose.yaml")
|
composeFile := filepath.Join(local, "compose.yaml")
|
||||||
if _, err = os.Stat(local); os.IsNotExist(err) {
|
if _, err = os.Stat(local); os.IsNotExist(err) {
|
||||||
|
|
||||||
err = os.MkdirAll(local, 0o700)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Create(composeFile)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer f.Close() //nolint:errcheck
|
|
||||||
|
|
||||||
var manifest v1.Manifest
|
var manifest v1.Manifest
|
||||||
err = json.Unmarshal(content, &manifest)
|
err = json.Unmarshal(content, &manifest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
if manifest.ArtifactType != "application/vnd.docker.compose.project" {
|
s, err2 := g.pullComposeFiles(ctx, local, composeFile, manifest, ref, resolver)
|
||||||
return "", fmt.Errorf("%s is not a compose project OCI artifact, but %s", ref.String(), manifest.ArtifactType)
|
if err2 != nil {
|
||||||
}
|
return s, err2
|
||||||
|
|
||||||
for i, layer := range manifest.Layers {
|
|
||||||
digested, err := reference.WithDigest(ref, layer.Digest)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
content, _, err := resolver.Get(ctx, digested.String())
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
if i > 0 {
|
|
||||||
_, err = f.Write([]byte("\n---\n"))
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err = f.Write(content)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return composeFile, nil
|
return composeFile, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g ociRemoteLoader) pullComposeFiles(ctx context.Context, local string, composeFile string, manifest v1.Manifest, ref reference.Named, resolver *imagetools.Resolver) (string, error) {
|
||||||
|
err := os.MkdirAll(local, 0o700)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := os.Create(composeFile)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer f.Close() //nolint:errcheck
|
||||||
|
|
||||||
|
if manifest.ArtifactType != "application/vnd.docker.compose.project" {
|
||||||
|
return "", fmt.Errorf("%s is not a compose project OCI artifact, but %s", ref.String(), manifest.ArtifactType)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, layer := range manifest.Layers {
|
||||||
|
digested, err := reference.WithDigest(ref, layer.Digest)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
content, _, err := resolver.Get(ctx, digested.String())
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if i > 0 {
|
||||||
|
_, err = f.Write([]byte("\n---\n"))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, err = f.Write(content)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
var _ loader.ResourceLoader = ociRemoteLoader{}
|
var _ loader.ResourceLoader = ociRemoteLoader{}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user