github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/pkg/zoci/fetch.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  	"context"
     9  
    10  	"github.com/Racer159/jackal/src/pkg/layout"
    11  	"github.com/Racer159/jackal/src/types"
    12  	"github.com/defenseunicorns/pkg/oci"
    13  	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
    14  )
    15  
    16  // FetchJackalYAML fetches the jackal.yaml file from the remote repository.
    17  func (r *Remote) FetchJackalYAML(ctx context.Context) (pkg types.JackalPackage, err error) {
    18  	manifest, err := r.FetchRoot(ctx)
    19  	if err != nil {
    20  		return pkg, err
    21  	}
    22  	return oci.FetchYAMLFile[types.JackalPackage](ctx, r.FetchLayer, manifest, layout.JackalYAML)
    23  }
    24  
    25  // FetchImagesIndex fetches the images/index.json file from the remote repository.
    26  func (r *Remote) FetchImagesIndex(ctx context.Context) (index *ocispec.Index, err error) {
    27  	manifest, err := r.FetchRoot(ctx)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  	return oci.FetchJSONFile[*ocispec.Index](ctx, r.FetchLayer, manifest, layout.IndexPath)
    32  }