Description
This library currently makes use of the billy v5 filesystem interface as the expected content that the driving program passes it to serve over NFS.
This interface is imperfect, although that is mostly due to rough edges in golang itself - fs.FileInfo
's Sys
as an escape hatch to system specific stat structs containing owner/group information on unix permissioned files is awkward to say the least, and the billy interface does not integrate the Change
interface particularly well, making the requirements to support a read-write filesystem for this library non-obvious.
Golang 1.16 introduces the io/fs interface pattern for thinking about embedded files and filesystem. This uses a similar interface pattern as billy's Change, for interface-based detection of optional filesystem features. The initial 1.16 interfaces do not include any of the write or mutation portion of filesystems, though there is some indication that we may expect that to come eventually. They also do not provide a mechanism for resolving symlinks (no lstat
or Readlink
).
We should decide and then support either a io/fs.FS
-> billy.Filesystem
shim or native io/fs.FS
.