working commit

This commit is contained in:
2026-03-10 12:52:12 +02:00
parent d0a5fab362
commit d1ef1fbe50
42 changed files with 242 additions and 426 deletions
+49
View File
@@ -85,6 +85,10 @@ func NewImagerFromPlace(place string) (*Imager, error) {
return imager, err
}
func (ima *Imager) Index() *ocispec.Index {
return &ima.index
}
func (ima *Imager) ReadManifest(ctx context.Context, digstr string) (bool, string, []byte, error) {
var exist bool
var mime string
@@ -181,6 +185,28 @@ func (ima *Imager) writeManifest(ctx context.Context, digest, mime string, paylo
return err
}
func (ima *Imager) readIndex(ctx context.Context) (*ocispec.Index, error) {
// Read index
var err error
res := &ocispec.Index{}
ipath := filepath.Join(ima.place, ocispec.ImageIndexFile)
ifile, err := os.OpenFile(ipath, os.O_RDONLY, 0)
if err != nil {
return res, err
}
defer ifile.Close()
buffer := bytes.NewBuffer(nil)
_, err = io.Copy(buffer, buffer)
if err != nil {
return res, err
}
err = json.Unmarshal(buffer.Bytes(), res)
if err != nil {
return res, err
}
return res, err
}
func (ima *Imager) writeIndex(ctx context.Context) error {
indexdat, err := json.Marshal(ima.index)
if err != nil {
@@ -293,3 +319,26 @@ func (ima *Imager) ReadLayer(ctx context.Context, digstr string, writer io.Write
exist = true
return exist, err
}
func (ima *Imager) LayerReader(ctx context.Context, digstr string) (int64, io.ReadCloser, error) {
var reader io.ReadCloser
var err error
var size int64
digobj, err := ocidigest.Parse(digstr)
if err != nil {
return size, reader, err
}
subdir := string(digobj.Algorithm())
mpath := filepath.Join(ima.place, ocispec.ImageBlobsDir, subdir, digobj.Encoded())
stat, err := os.Stat(mpath)
if err != nil {
return size, reader, err
}
size = stat.Size()
mfile, err := os.OpenFile(mpath, os.O_RDONLY, 0)
if err != nil {
return size, reader, err
}
reader = mfile
return size, reader, err
}