github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/pkg/zoci/utils.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: 2021-Present The Jackal Authors 3 4 // Package zoci contains functions for interacting with Jackal packages stored in OCI registries. 5 package zoci 6 7 import ( 8 "errors" 9 "fmt" 10 "strings" 11 12 "github.com/Racer159/jackal/src/types" 13 "github.com/defenseunicorns/pkg/helpers" 14 "oras.land/oras-go/v2/registry" 15 ) 16 17 // ReferenceFromMetadata returns a reference for the given metadata. 18 func ReferenceFromMetadata(registryLocation string, metadata *types.JackalMetadata, build *types.JackalBuildData) (string, error) { 19 ver := metadata.Version 20 if len(ver) == 0 { 21 return "", errors.New("version is required for publishing") 22 } 23 24 if !strings.HasSuffix(registryLocation, "/") { 25 registryLocation = registryLocation + "/" 26 } 27 registryLocation = strings.TrimPrefix(registryLocation, helpers.OCIURLPrefix) 28 29 format := "%s%s:%s" 30 raw := fmt.Sprintf(format, registryLocation, metadata.Name, ver) 31 32 if build != nil && build.Flavor != "" { 33 raw = fmt.Sprintf("%s-%s", raw, build.Flavor) 34 } 35 36 ref, err := registry.ParseReference(raw) 37 if err != nil { 38 return "", fmt.Errorf("failed to parse %s: %w", raw, err) 39 } 40 41 return ref.String(), nil 42 } 43 44 // GetInitPackageURL returns the URL for the init package for the given version. 45 func GetInitPackageURL(version string) string { 46 return fmt.Sprintf("ghcr.io/defenseunicorns/packages/init:%s", version) 47 }