From d9e9a370eae538f11475a692c0b065d1437f3ef4 Mon Sep 17 00:00:00 2001 From: Brandt Keller Date: Tue, 18 Feb 2025 19:19:50 +0000 Subject: [PATCH] feat(publish): determine skeleton package Signed-off-by: Brandt Keller --- src/internal/packager2/publish.go | 48 ++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/src/internal/packager2/publish.go b/src/internal/packager2/publish.go index 8647d76af2..a40591297c 100644 --- a/src/internal/packager2/publish.go +++ b/src/internal/packager2/publish.go @@ -6,6 +6,8 @@ package packager2 import ( "context" "fmt" + "os" + "github.com/defenseunicorns/pkg/oci" layout2 "github.com/zarf-dev/zarf/src/internal/packager2/layout" "github.com/zarf-dev/zarf/src/pkg/layout" @@ -37,26 +39,38 @@ func Publish(ctx context.Context, opts PublishOpts) error { return fmt.Errorf("path must be specified") } - // TODO skeleton and flavors during publish - // TODO Create skeleton locally - cOpts := layout2.CreateOptions{ - SigningKeyPath: opts.SigningKeyPath, - SigningKeyPassword: opts.SigningKeyPassword, - SetVariables: map[string]string{}, - } - // TODO Resolve compiler errors - buildPath, err := layout2.CreateSkeleton(ctx, opts.Path, cOpts) + // TODO determining the source target in order to determine skeleton / built package / oci to oci + + var pkgLayout *layout2.PackageLayout + + fi, err := os.Stat(opts.Path) if err != nil { - return fmt.Errorf("unable to create skeleton: %w", err) + return err } - layoutOpt := layout2.PackageLayoutOptions{ - SkipSignatureValidation: opts.SkipSignatureValidation, - IsPartial: true, - } - pkgLayout, err := layout2.LoadFromDir(ctx, buildPath, layoutOpt) - if err != nil { - return fmt.Errorf("unable to load package: %w", err) + if fi.IsDir() { + + // TODO skeleton and flavors during publish + // TODO Create skeleton locally + cOpts := layout2.CreateOptions{ + SigningKeyPath: opts.SigningKeyPath, + SigningKeyPassword: opts.SigningKeyPassword, + SetVariables: map[string]string{}, + } + // TODO Resolve compiler errors + buildPath, err := layout2.CreateSkeleton(ctx, opts.Path, cOpts) + if err != nil { + return fmt.Errorf("unable to create skeleton: %w", err) + } + + layoutOpt := layout2.PackageLayoutOptions{ + SkipSignatureValidation: opts.SkipSignatureValidation, + IsPartial: true, + } + pkgLayout, err = layout2.LoadFromDir(ctx, buildPath, layoutOpt) + if err != nil { + return fmt.Errorf("unable to load package: %w", err) + } } // TODO can we convert from packager types to packager2 types