package storage import ( "context" "github.com/darroyo/nasctl/internal/db" "github.com/darroyo/nasctl/internal/system" ) type Capabilities struct { Rsync bool `json:"rsync"` MergerfsBin bool `json:"mergerfs"` MergerfsMounted bool `json:"mergerfs_mounted"` SnapraidBin bool `json:"snapraid"` } func Probe(ctx context.Context) (Capabilities, error) { rsyncOut, _, _ := system.Run(ctx, "command", "-v", "rsync") snapraidOut, _, _ := system.Run(ctx, "command", "-v", "snapraid") mergerfsOut, _, _ := system.Run(ctx, "command", "-v", "mergerfs") _, _, mergerfsMountedErr := system.Run(ctx, "grep", "-q", "fuse.mergerfs", "/proc/mounts") return Capabilities{ Rsync: len(rsyncOut) > 0, MergerfsBin: len(mergerfsOut) > 0, MergerfsMounted: mergerfsMountedErr == nil, SnapraidBin: len(snapraidOut) > 0, }, nil } func ValidatePaths(cfg db.StorageConfig) error { return nil }