simplify the driver interface

This commit is contained in:
alu
2026-08-07 09:29:17 -07:00
parent b99bb45877
commit 31c409a94c
13 changed files with 181 additions and 197 deletions
+22 -3
View File
@@ -2,6 +2,7 @@ package drivers
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
@@ -9,12 +10,30 @@ import (
type MemInfoDriver struct{}
func NewMemInfoDriver() *MemInfoDriver {
return &MemInfoDriver{}
func NewMemInfoDriver() (*MemInfoDriver, error) {
r := MemInfoDriver{}
_, err := r.Read()
return &r, err
}
func (r *MemInfoDriver) Render(console *strings.Builder) error {
u, err := r.Read()
if err != nil {
return err
}
usage := u.(MemoryUsage)
fmt.Fprintf(console, "--- Usage ---\n")
fmt.Fprintf(console, "%-16s | %.2f GiB\033[K\n", "Total", usage.TotalGB)
fmt.Fprintf(console, "%-16s | %.2f GiB (%.2f%%) \033[K\n", "Used", usage.UsedGB, usage.UsedPercent)
fmt.Fprintf(console, "%-16s | %.2f GiB\033[K\n", "Avail", usage.AvailableGB)
return nil
}
// Read /proc/meminfo for active system memory statistics
func (r *MemInfoDriver) ReadUsageSensors() (MemoryUsage, error) {
func (r *MemInfoDriver) Read() (any, error) {
usage := MemoryUsage{}
file, err := os.Open("/proc/meminfo")
if err != nil {