From 09a28836ca5d36e9c1223adf515e13be2c860f71 Mon Sep 17 00:00:00 2001 From: DBT Date: Sun, 1 Mar 2026 13:04:58 +0000 Subject: [PATCH] ci cross-platform fix: make system_info disk usage helper windows-safe with build tags --- pkg/tools/system.go | 12 ++---------- pkg/tools/system_disk_unix.go | 22 ++++++++++++++++++++++ pkg/tools/system_disk_windows.go | 7 +++++++ 3 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 pkg/tools/system_disk_unix.go create mode 100644 pkg/tools/system_disk_windows.go diff --git a/pkg/tools/system.go b/pkg/tools/system.go index 465147a..4cbb089 100644 --- a/pkg/tools/system.go +++ b/pkg/tools/system.go @@ -6,7 +6,6 @@ import ( "os" "runtime" "strings" - "syscall" ) type SystemInfoTool struct{} @@ -87,15 +86,8 @@ func (t *SystemInfoTool) Execute(ctx context.Context, args map[string]interface{ } } - // Disk usage for / - var stat syscall.Statfs_t - if err := syscall.Statfs("/", &stat); err == nil { - bsize := uint64(stat.Bsize) - total := stat.Blocks * bsize - free := stat.Bfree * bsize - used := total - free - sb.WriteString(fmt.Sprintf("Disk (/): Used %.2f GB / Total %.2f GB (%.2f%%)\n", - float64(used)/1024/1024/1024, float64(total)/1024/1024/1024, float64(used)/float64(total)*100)) + if diskLine := diskUsageRoot(); diskLine != "" { + sb.WriteString(diskLine) } return sb.String(), nil diff --git a/pkg/tools/system_disk_unix.go b/pkg/tools/system_disk_unix.go new file mode 100644 index 0000000..f9cf9eb --- /dev/null +++ b/pkg/tools/system_disk_unix.go @@ -0,0 +1,22 @@ +//go:build !windows + +package tools + +import "fmt" +import "syscall" + +func diskUsageRoot() string { + var stat syscall.Statfs_t + if err := syscall.Statfs("/", &stat); err != nil { + return "" + } + bsize := uint64(stat.Bsize) + total := stat.Blocks * bsize + free := stat.Bfree * bsize + used := total - free + if total == 0 { + return "" + } + return fmt.Sprintf("Disk (/): Used %.2f GB / Total %.2f GB (%.2f%%)\n", + float64(used)/1024/1024/1024, float64(total)/1024/1024/1024, float64(used)/float64(total)*100) +} diff --git a/pkg/tools/system_disk_windows.go b/pkg/tools/system_disk_windows.go new file mode 100644 index 0000000..9012f73 --- /dev/null +++ b/pkg/tools/system_disk_windows.go @@ -0,0 +1,7 @@ +//go:build windows + +package tools + +func diskUsageRoot() string { + return "" +}