diff --git a/cmd/status/metrics_cpu.go b/cmd/status/metrics_cpu.go index 59be505..f892bef 100644 --- a/cmd/status/metrics_cpu.go +++ b/cmd/status/metrics_cpu.go @@ -119,7 +119,10 @@ func getCoreTopology() (pCores, eCores int) { return 0, 0 } - lines := strings.Split(strings.TrimSpace(out), "\n") + var lines []string + for line := range strings.Lines(strings.TrimSpace(out)) { + lines = append(lines, line) + } if len(lines) < 4 { return 0, 0 } diff --git a/cmd/status/metrics_memory.go b/cmd/status/metrics_memory.go index 5851dd5..6cdd021 100644 --- a/cmd/status/metrics_memory.go +++ b/cmd/status/metrics_memory.go @@ -46,22 +46,22 @@ func getFileBackedMemory() uint64 { // Parse page size from first line: "Mach Virtual Memory Statistics: (page size of 16384 bytes)" var pageSize uint64 = 4096 // Default - lines := strings.Split(out, "\n") - if len(lines) > 0 { - firstLine := lines[0] - if strings.Contains(firstLine, "page size of") { - if _, after, found := strings.Cut(firstLine, "page size of "); found { - if before, _, found := strings.Cut(after, " bytes"); found { - if size, err := strconv.ParseUint(strings.TrimSpace(before), 10, 64); err == nil { - pageSize = size + firstLine := true + for line := range strings.Lines(out) { + if firstLine { + firstLine = false + if strings.Contains(line, "page size of") { + if _, after, found := strings.Cut(line, "page size of "); found { + if before, _, found := strings.Cut(after, " bytes"); found { + if size, err := strconv.ParseUint(strings.TrimSpace(before), 10, 64); err == nil { + pageSize = size + } } } } } - } - // Parse "File-backed pages: 388975." - for _, line := range lines { + // Parse "File-backed pages: 388975." if strings.Contains(line, "File-backed pages:") { if _, after, found := strings.Cut(line, ":"); found { numStr := strings.TrimSpace(after) diff --git a/cmd/status/metrics_process.go b/cmd/status/metrics_process.go index 5c497a4..b11f25c 100644 --- a/cmd/status/metrics_process.go +++ b/cmd/status/metrics_process.go @@ -21,15 +21,17 @@ func collectTopProcesses() []ProcessInfo { return nil } - lines := strings.Split(strings.TrimSpace(out), "\n") var procs []ProcessInfo - for i, line := range lines { + i := 0 + for line := range strings.Lines(strings.TrimSpace(out)) { if i == 0 { + i++ continue } if i > 5 { break } + i++ fields := strings.Fields(line) if len(fields) < 3 { continue diff --git a/cmd/status/view.go b/cmd/status/view.go index a3c590d..82a4a49 100644 --- a/cmd/status/view.go +++ b/cmd/status/view.go @@ -540,7 +540,10 @@ func renderCard(data cardData, width int, height int) string { header := titleStyle.Render(titleText) + " " + lineStyle.Render(strings.Repeat("╌", lineLen)) content := header + "\n" + strings.Join(data.lines, "\n") - lines := strings.Split(content, "\n") + var lines []string + for line := range strings.Lines(content) { + lines = append(lines, line) + } for len(lines) < height { lines = append(lines, "") }