Skip to content
This repository was archived by the owner on Jan 24, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions archive.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,6 @@ type (
// BuildResult contains the output of building an eStargz blob.
BuildResult = core.BuildResult

// ArchiveBuilder creates eStargz blobs from files.
ArchiveBuilder = core.ArchiveBuilder

// ArchiveReader reads eStargz blobs.
ArchiveReader = core.ArchiveReader

// Extractor extracts eStargz archives to the filesystem.
Extractor = core.Extractor

// TOC represents the table of contents of an eStargz blob.
TOC = core.TOC

Expand Down
16 changes: 3 additions & 13 deletions cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,6 @@ package blobber

import "github.com/meigma/blobber/core"

// Type aliases re-exported from core package for cache operations.
type (
// BlobHandle provides random access to a cached or remote blob.
// Implements io.ReaderAt for estargz compatibility.
BlobHandle = core.BlobHandle

// LayerDescriptor captures the resolved layer metadata plus platform context.
// Used as the cache key and for blob retrieval operations.
LayerDescriptor = core.LayerDescriptor

// BlobSource provides access to blobs, either from cache or network.
BlobSource = core.BlobSource
)
// LayerDescriptor captures the resolved layer metadata plus platform context.
// Used as the cache key and for blob retrieval operations.
type LayerDescriptor = core.LayerDescriptor
18 changes: 10 additions & 8 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,17 @@ import (
"github.com/meigma/blobber/core"
"github.com/meigma/blobber/internal/archive"
"github.com/meigma/blobber/internal/cache"
"github.com/meigma/blobber/internal/contracts"
"github.com/meigma/blobber/internal/registry"
"github.com/meigma/blobber/internal/safepath"
)

// Client provides operations against OCI registries.
type Client struct {
registry Registry
builder ArchiveBuilder
reader ArchiveReader
validator PathValidator
registry contracts.Registry
builder contracts.ArchiveBuilder
reader contracts.ArchiveReader
validator contracts.PathValidator
logger *slog.Logger

// configuration passed to registry
Expand Down Expand Up @@ -89,14 +90,15 @@ func NewClient(opts ...ClientOption) (*Client, error) {
regOpts = append(regOpts, registry.WithDescriptorCache(true))
}

c.registry = registry.New(regOpts...)
registryClient := registry.New(regOpts...)
c.registry = registryClient
c.builder = archive.NewBuilder(c.logger)
c.reader = archive.NewReader()
c.validator = safepath.NewValidator()

// Initialize cache if configured
if c.cacheDir != "" {
cacheInstance, err := cache.New(c.cacheDir, c.registry, c.logger)
cacheInstance, err := cache.New(c.cacheDir, registryClient, c.logger)
if err != nil {
return nil, fmt.Errorf("create cache: %w", err)
}
Expand Down Expand Up @@ -184,7 +186,7 @@ func (c *Client) openImageCached(ctx context.Context, ref string) (*Image, error
}

// Get blob handle from cache
var handle BlobHandle
var handle contracts.BlobHandle
if c.lazyLoading {
// Lazy loading: fetch bytes on-demand via ReadAt
handle, err = c.cache.OpenLazy(ctx, ref, desc)
Expand All @@ -202,7 +204,7 @@ func (c *Client) openImageCached(ctx context.Context, ref string) (*Image, error
}

// Create Image from the cached handle
img, err := NewImageFromHandle(ref, handle, c.validator, c.logger)
img, err := newImageFromHandle(ref, handle, c.validator, c.logger)
if err != nil {
handle.Close()
return nil, fmt.Errorf("open image %s: %w", ref, err)
Expand Down
Loading