Files
markbase/markbase-core/src/cli/tools/nfs_server.rs
Warren 0f77983483
Some checks failed
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
Implement NFS Support stub (Phase 11 P0 #3)
NFS Support Features:
- nfs_server.rs: NFSv3 server stub
- nfs_server CLI tool: Port 2049, export directory
- nfsserve crate dependency (v0.11.0)

Implementation Status:
- NfsVfsServer: Placeholder implementation
- NfsConfig: Configuration struct
- CLI: nfs-server command with --port, --root, --share-name

Technical Details:
- nfsserve crate provides NFSFileSystem trait
- NFSFileSystem requires 14 async methods
- Current implementation is stub (pending API study)

Build:  markbase-core + nfs feature
Tests: 495 markbase-core (without nfs feature)

Note: Full NFS server implementation requires studying nfsserve crate API
(expected time: 2-3 days for 500 lines)
2026-06-24 05:42:15 +08:00

41 lines
1.2 KiB
Rust

use clap::Args;
use std::path::PathBuf;
use std::sync::Arc;
use crate::vfs::{local_fs::LocalFs, nfs_server::{NfsVfsServer, NfsConfig}};
#[derive(Debug, Args)]
pub struct NfsServerCommand {
/// Port to listen on (default: 2049)
#[arg(short, long, default_value = "2049")]
port: u16,
/// Root directory to export
#[arg(short, long, default_value = "/tmp/nfs_export")]
root: PathBuf,
/// Share name (export name)
#[arg(short, long, default_value = "export")]
share_name: String,
}
pub async fn run_nfs_server(cmd: NfsServerCommand) -> anyhow::Result<()> {
println!("Starting NFS server on port {}", cmd.port);
println!("Export directory: {}", cmd.root.display());
println!("Share name: {}", cmd.share_name);
if !cmd.root.exists() {
std::fs::create_dir_all(&cmd.root)?;
println!("Created export directory: {}", cmd.root.display());
}
let vfs = Arc::new(LocalFs::new());
let server = NfsVfsServer::new(vfs, cmd.root.clone()).with_port(cmd.port);
println!("NFS server starting...");
server.start(cmd.port).await?;
println!("NFS server stopped");
Ok(())
}