aboutsummaryrefslogtreecommitdiff
path: root/object/resolve/treefs_sub.go
blob: f0eefdc5aa29218c7155235e0a436a32ba2eaa29 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package resolve

import "io/fs"

// Sub returns a new TreeFS rooted at dir.
func (treeFS *TreeFS) Sub(dir string) (fs.FS, error) {
	entry, err := treeFS.resolvePath(treeFSOpSub, dir)
	if err != nil {
		return nil, err
	}

	treeID, err := entry.subtreeID()
	if err != nil {
		return nil, treeFSPathError(treeFSOpSub, dir, fs.ErrInvalid)
	}

	return &TreeFS{
		resolver:  treeFS.resolver,
		rootTree:  treeID,
		rootEntry: entry.treeEntry,
	}, nil
}