chore(fs): changes to allow Filesystem to be implemented externally (#10040)

### Purpose

The `fs.Filesystem` interface contains two parts that cannot be
implemented externally because they are private:

* `filesystemWrapperType`: this PR changes `unwrapFilesystem` to
downcast to a specific concrete type
* `underlying`: this PR simply moves it to an unexported interface

### Testing

Regular tests pass.
This commit is contained in:
Tommy van der Vorst
2025-04-08 12:39:39 +00:00
committed by GitHub
parent d7ca483df1
commit d23cd197e1
11 changed files with 33 additions and 69 deletions
+3 -3
View File
@@ -261,7 +261,7 @@ func newMtimeFS(path string, db database, options ...MtimeFSOption) *mtimeFS {
func newMtimeFSWithWalk(path string, db database, options ...MtimeFSOption) (*mtimeFS, *walkFilesystem) {
fs := NewFilesystem(FilesystemTypeBasic, path, NewMtimeOption(db, options...))
wfs, _ := unwrapFilesystem(fs, filesystemWrapperTypeWalk)
mfs, _ := unwrapFilesystem(fs, filesystemWrapperTypeMtime)
return mfs.(*mtimeFS), wfs.(*walkFilesystem)
wfs, _ := unwrapFilesystem[*walkFilesystem](fs)
mfs, _ := unwrapFilesystem[*mtimeFS](fs)
return mfs, wfs
}