Skip to content

Commit 599e4b2

Browse files
committed
extract method to reduce cyclomatic complexity
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent fe8c278 commit 599e4b2

File tree

1 file changed

+36
-29
lines changed

1 file changed

+36
-29
lines changed

pkg/remote/oci.go

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -108,50 +108,57 @@ func (g ociRemoteLoader) Load(ctx context.Context, path string) (string, error)
108108
local := filepath.Join(g.cache, descriptor.Digest.Hex())
109109
composeFile := filepath.Join(local, "compose.yaml")
110110
if _, err = os.Stat(local); os.IsNotExist(err) {
111-
112-
err = os.MkdirAll(local, 0o700)
111+
var manifest v1.Manifest
112+
err = json.Unmarshal(content, &manifest)
113113
if err != nil {
114114
return "", err
115115
}
116116

117-
f, err := os.Create(composeFile)
118-
if err != nil {
119-
return "", err
117+
s, err2 := g.pullComposeFiles(ctx, local, composeFile, manifest, ref, resolver)
118+
if err2 != nil {
119+
return s, err2
120120
}
121-
defer f.Close() //nolint:errcheck
121+
}
122+
return composeFile, nil
123+
}
122124

123-
var manifest v1.Manifest
124-
err = json.Unmarshal(content, &manifest)
125+
func (g ociRemoteLoader) pullComposeFiles(ctx context.Context, local string, composeFile string, manifest v1.Manifest, ref reference.Named, resolver *imagetools.Resolver) (string, error) {
126+
err := os.MkdirAll(local, 0o700)
127+
if err != nil {
128+
return "", err
129+
}
130+
131+
f, err := os.Create(composeFile)
132+
if err != nil {
133+
return "", err
134+
}
135+
defer f.Close() //nolint:errcheck
136+
137+
if manifest.ArtifactType != "application/vnd.docker.compose.project" {
138+
return "", fmt.Errorf("%s is not a compose project OCI artifact, but %s", ref.String(), manifest.ArtifactType)
139+
}
140+
141+
for i, layer := range manifest.Layers {
142+
digested, err := reference.WithDigest(ref, layer.Digest)
125143
if err != nil {
126144
return "", err
127145
}
128-
129-
if manifest.ArtifactType != "application/vnd.docker.compose.project" {
130-
return "", fmt.Errorf("%s is not a compose project OCI artifact, but %s", ref.String(), manifest.ArtifactType)
146+
content, _, err := resolver.Get(ctx, digested.String())
147+
if err != nil {
148+
return "", err
131149
}
132-
133-
for i, layer := range manifest.Layers {
134-
digested, err := reference.WithDigest(ref, layer.Digest)
135-
if err != nil {
136-
return "", err
137-
}
138-
content, _, err := resolver.Get(ctx, digested.String())
139-
if err != nil {
140-
return "", err
141-
}
142-
if i > 0 {
143-
_, err = f.Write([]byte("\n---\n"))
144-
if err != nil {
145-
return "", err
146-
}
147-
}
148-
_, err = f.Write(content)
150+
if i > 0 {
151+
_, err = f.Write([]byte("\n---\n"))
149152
if err != nil {
150153
return "", err
151154
}
152155
}
156+
_, err = f.Write(content)
157+
if err != nil {
158+
return "", err
159+
}
153160
}
154-
return composeFile, nil
161+
return "", nil
155162
}
156163

157164
var _ loader.ResourceLoader = ociRemoteLoader{}

0 commit comments

Comments
 (0)