func NewZipPackageFileSystem()

in packages/fs.go [90:113]


func NewZipPackageFileSystem(p *Package) (*ZipPackageFileSystem, error) {
	reader, err := zip.OpenReader(p.BasePath)
	if err != nil {
		return nil, err
	}
	var root string
	for _, f := range reader.File {
		name := path.Clean(f.Name)
		dir, base := path.Split(name)
		dir = path.Clean(dir)
		// Find manifest files at the root of the package
		if dir != "." && path.Dir(dir) == "." && base == "manifest.yml" {
			root = dir
			break
		}
	}
	if root == "" {
		return nil, fmt.Errorf("failed to determine root directory in package (path: %s)", p.BasePath)
	}
	return &ZipPackageFileSystem{
		root:   root,
		reader: reader,
	}, nil
}