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
}