Skip to content

Commit 5fcf9a5

Browse files
committed
refactor: layout
Signed-off-by: Philip Laine <[email protected]>
1 parent 4fdcc17 commit 5fcf9a5

17 files changed

+494
-141
lines changed

src/cmd/package.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,15 @@ var packageMirrorCmd = &cobra.Command{
153153
SkipSignatureValidation: pkgConfig.PkgOpts.SkipSignatureValidation,
154154
Filter: filter,
155155
}
156-
pkgPaths, err := packager2.LoadPackage(cmd.Context(), loadOpt)
156+
pkgLayout, err := packager2.LoadPackage(cmd.Context(), loadOpt)
157157
if err != nil {
158158
return err
159159
}
160-
defer os.RemoveAll(pkgPaths.Base)
160+
//nolint: errcheck // ignore
161+
defer pkgLayout.Cleanup()
161162
mirrorOpt := packager2.MirrorOptions{
162163
Cluster: c,
163-
PackagePaths: *pkgPaths,
164+
PkgLayout: pkgLayout,
164165
Filter: filter,
165166
RegistryInfo: pkgConfig.InitOpts.RegistryInfo,
166167
GitInfo: pkgConfig.InitOpts.GitServer,

src/internal/packager2/inspect.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ package packager2
77
import (
88
"context"
99
"fmt"
10+
"os"
1011

1112
"github.com/defenseunicorns/pkg/helpers/v2"
1213
"github.com/zarf-dev/zarf/src/api/v1alpha1"
14+
"github.com/zarf-dev/zarf/src/config"
1315
"github.com/zarf-dev/zarf/src/internal/packager/sbom"
1416
"github.com/zarf-dev/zarf/src/pkg/cluster"
1517
"github.com/zarf-dev/zarf/src/pkg/packager/filters"
18+
"github.com/zarf-dev/zarf/src/pkg/utils"
1619
)
1720

1821
// ZarfInspectOptions tracks the user-defined preferences during a package inspection.
@@ -35,7 +38,7 @@ func Inspect(ctx context.Context, opt ZarfInspectOptions) (v1alpha1.ZarfPackage,
3538
}
3639

3740
if getSBOM(opt.ViewSBOM, opt.SBOMOutputDir) {
38-
err = handleSBOMOptions(ctx, pkg, opt)
41+
err = handleSBOMOptions(ctx, opt)
3942
if err != nil {
4043
return pkg, err
4144
}
@@ -75,7 +78,7 @@ func getPackageMetadata(ctx context.Context, opt ZarfInspectOptions) (v1alpha1.Z
7578
return pkg, nil
7679
}
7780

78-
func handleSBOMOptions(ctx context.Context, pkg v1alpha1.ZarfPackage, opt ZarfInspectOptions) error {
81+
func handleSBOMOptions(ctx context.Context, opt ZarfInspectOptions) error {
7982
loadOpt := LoadOptions{
8083
Source: opt.Source,
8184
SkipSignatureValidation: opt.SkipSignatureValidation,
@@ -86,23 +89,25 @@ func handleSBOMOptions(ctx context.Context, pkg v1alpha1.ZarfPackage, opt ZarfIn
8689
if err != nil {
8790
return err
8891
}
89-
if opt.SBOMOutputDir != "" {
90-
out, err := layout.SBOMs.OutputSBOMFiles(opt.SBOMOutputDir, pkg.Metadata.Name)
92+
93+
sbomDirPath := opt.SBOMOutputDir
94+
if sbomDirPath == "" {
95+
tmpDir, err := utils.MakeTempDir(config.CommonOptions.TempDirectory)
9196
if err != nil {
9297
return err
9398
}
94-
if opt.ViewSBOM {
95-
err := sbom.ViewSBOMFiles(out)
96-
if err != nil {
97-
return err
98-
}
99-
}
100-
} else if opt.ViewSBOM {
101-
err := sbom.ViewSBOMFiles(layout.SBOMs.Path)
99+
defer os.RemoveAll(tmpDir)
100+
sbomDirPath = tmpDir
101+
}
102+
sbomPath, err := layout.GetSBOM(sbomDirPath)
103+
if err != nil {
104+
return err
105+
}
106+
if opt.ViewSBOM {
107+
err := sbom.ViewSBOMFiles(sbomPath)
102108
if err != nil {
103109
return err
104110
}
105-
return err
106111
}
107112
return nil
108113
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
3+
4+
// Package layout contains functions for inteacting the Zarf packages.
5+
package layout
6+
7+
// Constants used in the default package layout.
8+
const (
9+
ZarfYAML = "zarf.yaml"
10+
Signature = "zarf.yaml.sig"
11+
Checksums = "checksums.txt"
12+
13+
ImagesDir = "images"
14+
ComponentsDir = "components"
15+
16+
SBOMDir = "zarf-sbom"
17+
SBOMTar = "sboms.tar"
18+
19+
IndexJSON = "index.json"
20+
OCILayout = "oci-layout"
21+
)
22+
23+
// ComponentDir is the type for the different directories in a component.
24+
type ComponentDir string
25+
26+
// Different component directory types.
27+
const (
28+
RepoComponentDir ComponentDir = "repos"
29+
FilesComponentDir ComponentDir = "files"
30+
ChartsComponentDir ComponentDir = "charts"
31+
ManifestsComponentDir ComponentDir = "manifests"
32+
DataComponentDir ComponentDir = "data"
33+
ValuesComponentDir ComponentDir = "values"
34+
)

0 commit comments

Comments
 (0)