MCPcopy
hub / github.com/slimtoolkit/slim / LoadPackage

Function LoadPackage

pkg/docker/dockerimage/dockerimage.go:518–1398  ·  view source on GitHub ↗
(archivePath string,
	imageID string,
	skipObjects bool,
	topChangesMax int,
	doHashData bool,
	doDetectDuplicates bool,
	changeDataHashMatchers map[string]*ChangeDataHashMatcher,
	changePathMatchers []*ChangePathMatcher,
	changeDataMatchers map[string]*ChangeDataMatcher,
	utf8Detector *UTF8Detector,
	processorParams *ProcessorParams,
)

Source from the content-addressed store, hash-verified

516)
517
518func LoadPackage(archivePath string,
519 imageID string,
520 skipObjects bool,
521 topChangesMax int,
522 doHashData bool,
523 doDetectDuplicates bool,
524 changeDataHashMatchers map[string]*ChangeDataHashMatcher,
525 changePathMatchers []*ChangePathMatcher,
526 changeDataMatchers map[string]*ChangeDataMatcher,
527 utf8Detector *UTF8Detector,
528 processorParams *ProcessorParams,
529) (*Package, error) {
530 imageID = dockerutil.CleanImageID(imageID)
531
532 cpmDumps := hasChangePathMatcherDumps(changePathMatchers)
533 dv1ConfigObjectFileName := fmt.Sprintf("%s.json", imageID)
534 afile, err := os.Open(archivePath)
535 if err != nil {
536 log.Errorf("dockerimage.LoadPackage: os.Open error - %v", err)
537 return nil, err
538 }
539
540 defer afile.Close()
541
542 pkg := newPackage()
543 layers := map[string]*Layer{}
544
545 archiveFiles := map[string]struct{}{}
546 var tarFileCount uint
547 var foundOCILayout bool
548 var foundBlobsDir bool
549 var foundIndex bool
550 var foundDockerManifest bool
551 var foundDockerV1Config bool
552 var foundDockerV1Layer bool
553 var ociImageManifestDesc *oci.Descriptor
554
555 tr := tar.NewReader(afile)
556 for {
557 hdr, err := tr.Next()
558 if err != nil {
559 if errors.Is(err, io.EOF) {
560 break
561 }
562
563 log.Errorf("dockerimage.LoadPackage: error reading archive(%v) enumerating files - %v", archivePath, err)
564 return nil, err
565 }
566
567 tarFileCount++
568 if hdr == nil || hdr.Name == "" {
569 log.Debugf("dockerimage.LoadPackage: ignoring bad tar header (%d)", tarFileCount)
570 continue
571 }
572
573 hdr.Name = filepath.Clean(hdr.Name)
574 archiveFiles[hdr.Name] = struct{}{}
575 if hdr.Name == ociBlobDirName ||

Callers 1

OnCommandFunction · 0.92

Calls 13

CleanImageIDFunction · 0.92
ToStringFunction · 0.92
newPackageFunction · 0.85
jsonFromStreamFunction · 0.85
DefaultRuntimeArchFunction · 0.85
buildInfoDecodeFunction · 0.85
newLayerFunction · 0.85
layerFromStreamFunction · 0.85
IsMethod · 0.80
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected