Files
baby-nas/internal/storage/capabilities.go
T
darroyo e5b9b233b8 fix: use exec.LookPath instead of 'command -v' for binary detection
'command' is a shell builtin, not a real binary, so exec.Command
always failed with exit 127. Replaced with os/exec.LookPath which
correctly resolves binaries in PATH.

Also adds capabilities_test.go to verify Probe() matches
exec.LookPath results.

Version: 0.7.2
2026-07-07 00:06:06 -04:00

36 lines
868 B
Go

package storage
import (
"context"
"os/exec"
"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) {
_, rsyncErr := exec.LookPath("rsync")
_, snapraidErr := exec.LookPath("snapraid")
_, mergerfsErr := exec.LookPath("mergerfs")
_, _, mergerfsMountedErr := system.Run(ctx, "grep", "-q", "fuse.mergerfs", "/proc/mounts")
return Capabilities{
Rsync: rsyncErr == nil,
MergerfsBin: mergerfsErr == nil,
MergerfsMounted: mergerfsMountedErr == nil,
SnapraidBin: snapraidErr == nil,
}, nil
}
func ValidatePaths(cfg db.StorageConfig) error {
return nil
}