diff --git a/cmd/serve/nfs/nfs.go b/cmd/serve/nfs/nfs.go index 210ede534..32c91ebb6 100644 --- a/cmd/serve/nfs/nfs.go +++ b/cmd/serve/nfs/nfs.go @@ -16,7 +16,9 @@ import ( "github.com/rclone/rclone/cmd" "github.com/rclone/rclone/cmd/serve" "github.com/rclone/rclone/fs" + "github.com/rclone/rclone/fs/config/configstruct" "github.com/rclone/rclone/fs/config/flags" + "github.com/rclone/rclone/fs/rc" "github.com/rclone/rclone/vfs" "github.com/rclone/rclone/vfs/vfscommon" "github.com/rclone/rclone/vfs/vfsflags" @@ -85,6 +87,23 @@ func init() { vfsflags.AddFlags(Command.Flags()) AddFlags(Command.Flags()) serve.Command.AddCommand(Command) + serve.AddRc("nfs", func(ctx context.Context, f fs.Fs, in rc.Params) (serve.Handle, error) { + // Create VFS + var vfsOpt = vfscommon.Opt // set default opts + err := configstruct.SetAny(in, &vfsOpt) + if err != nil { + return nil, err + } + VFS := vfs.New(f, &vfsOpt) + // Read opts + var opt = Opt // set default opts + err = configstruct.SetAny(in, &opt) + if err != nil { + return nil, err + } + // Create server + return NewServer(ctx, VFS, &opt) + }) } // Run the command diff --git a/cmd/serve/nfs/nfs_test.go b/cmd/serve/nfs/nfs_test.go new file mode 100644 index 000000000..70311574e --- /dev/null +++ b/cmd/serve/nfs/nfs_test.go @@ -0,0 +1,19 @@ +//go:build unix + +// The serving is tested in cmd/nfsmount - here we test anything else +package nfs + +import ( + "testing" + + _ "github.com/rclone/rclone/backend/local" + "github.com/rclone/rclone/cmd/serve/servetest" + "github.com/rclone/rclone/fs/rc" +) + +func TestRc(t *testing.T) { + servetest.TestRc(t, rc.Params{ + "type": "nfs", + "vfs_cache_mode": "off", + }) +}