working commit
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user