-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support golang io/fs interface #30
Comments
@willscott What's your thoughts about switching from billy to io/fs? |
I'm happy to see this happen. I think the main thing is that my understanding is that there is not yet a clear standardization on what the extension of the core io/fs interface would be for mutation / changing. E.g. how the methods expressed in the |
@willscott been playing around with io/fs and somewhat got a working fork https://github.com/scorpionknifes/go-nfs. Currently basing mutation by following I'm planning to get memfs working and write some tests (the fork is still in very early stages) |
Cool! I'll add you to this repo so you can work on a branch here and we can get this into a PR and merged as you get happy with it.
|
Thanks for the feedback! (Sry for being slow) Currently working in https://github.com/willscott/go-nfs/tree/feat/iofs A bit confused and not too sure what's the best way to 'limit' how much of the file system they expose. I'm thinking of limiting it by using a wrapper. Something like how the change file attribute interface is only available by using certain wrappers in here Also, I think if you pass in an Looking into setting up a |
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
'sSys
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 theChange
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
orReadlink
).We should decide and then support either a
io/fs.FS
->billy.Filesystem
shim or nativeio/fs.FS
.The text was updated successfully, but these errors were encountered: