fix: handle error in Scanner

костыль тот ещё
This commit is contained in:
nekohepott 2026-06-17 04:46:20 +03:00
parent e930791f58
commit 75e97a09f6
No known key found for this signature in database
2 changed files with 28 additions and 16 deletions

View File

@ -33,7 +33,10 @@ func main() {
fmt.Println("Warning: No layout specified in config, using default") fmt.Println("Warning: No layout specified in config, using default")
} }
distID, prettyName := providers.GetDist() distID, prettyName, err := providers.GetDist()
if err != nil {
fmt.Println(err)
}
var defaultLogo string var defaultLogo string
if conf.CustomLogo != "" { if conf.CustomLogo != "" {
@ -74,9 +77,9 @@ func main() {
statProviders := map[string]statProvider{ statProviders := map[string]statProvider{
"host": {label: "host", fn: providers.GetHostname}, "host": {label: "host", fn: providers.GetHostname},
"dist": {label: "os", fn: func() string { return prettyName }}, "dist": {label: "os", fn: func() string { return prettyName }},
"cpu": {label: "cpu", fn: providers.GetCpu}, "cpu": {label: "ram", fn: func() string { v, _ := providers.GetCpu(); return v }},
"krnl": {label: "kernel", fn: providers.GetKernel}, "krnl": {label: "kernel", fn: providers.GetKernel},
"ram": {label: "ram", fn: providers.GetRam}, "ram": {label: "ram", fn: func() string { v, _ := providers.GetRam(); return v }},
"gpu": {label: "gpu", fn: providers.GetGpu}, "gpu": {label: "gpu", fn: providers.GetGpu},
"de/wm": {label: "de/wm", fn: providers.GetDE}, "de/wm": {label: "de/wm", fn: providers.GetDE},
"pkgs": {label: "packages", fn: providers.GetPkgs}, "pkgs": {label: "packages", fn: providers.GetPkgs},

View File

@ -17,7 +17,7 @@ var id, prettyName string
const gpuCacheFile = "/tmp/gogofetch_gpu_cache" const gpuCacheFile = "/tmp/gogofetch_gpu_cache"
func GetDist() (string, string) { func GetDist() (string, string, error) {
f, _ := os.Open("/etc/os-release") f, _ := os.Open("/etc/os-release")
defer func(f *os.File) { defer func(f *os.File) {
err := f.Close() err := f.Close()
@ -39,10 +39,13 @@ func GetDist() (string, string) {
prettyName = strings.ReplaceAll(prettyName, "'", "") prettyName = strings.ReplaceAll(prettyName, "'", "")
} }
} }
if id == "" && prettyName == "" { if err := s.Err(); err != nil {
return "unknown", "unknown" return "", "", fmt.Errorf("reading input: %w", err)
} }
return id, prettyName if id == "" && prettyName == "" {
return "unknown", "unknown", nil
}
return id, prettyName, nil
} }
func getSizeRam(total, avaible, used *int) string { func getSizeRam(total, avaible, used *int) string {
@ -62,10 +65,10 @@ func getSizeRam(total, avaible, used *int) string {
return fmt.Sprintf("%d / %d MiB", *used, totalMB) return fmt.Sprintf("%d / %d MiB", *used, totalMB)
} }
func GetRam() string { func GetRam() (string, error) {
f, err := os.Open("/proc/meminfo") f, err := os.Open("/proc/meminfo")
if err != nil { if err != nil {
return "error" return "", err
} }
defer f.Close() defer f.Close()
@ -77,27 +80,30 @@ func GetRam() string {
if strings.HasPrefix(line, "MemTotal:") { if strings.HasPrefix(line, "MemTotal:") {
_, err2 := fmt.Sscanf(line, "MemTotal: %d kB", &total) _, err2 := fmt.Sscanf(line, "MemTotal: %d kB", &total)
if err2 != nil { if err2 != nil {
return "" return "", err
} }
} }
if strings.HasPrefix(line, "MemAvailable:") { if strings.HasPrefix(line, "MemAvailable:") {
_, err := fmt.Sscanf(line, "MemAvailable: %d kB", &available) _, err := fmt.Sscanf(line, "MemAvailable: %d kB", &available)
if err != nil { if err != nil {
return "" return "", err
} }
} }
} }
if err := s.Err(); err != nil {
return "", fmt.Errorf("reading input: %w", err)
}
ram := getSizeRam(&total, &available, &used) ram := getSizeRam(&total, &available, &used)
ram = strings.TrimSpace(ram) ram = strings.TrimSpace(ram)
return ram return ram, nil
} }
func GetCpu() string { func GetCpu() (string, error) {
f, err := os.Open("/proc/cpuinfo") f, err := os.Open("/proc/cpuinfo")
if err != nil { if err != nil {
return "unknown" return "unknown", err
} }
defer f.Close() defer f.Close()
@ -110,12 +116,15 @@ func GetCpu() string {
parts := strings.SplitN(line, ":", 2) parts := strings.SplitN(line, ":", 2)
if len(parts) > 1 { if len(parts) > 1 {
cpu := strings.TrimSpace(parts[1]) cpu := strings.TrimSpace(parts[1])
return cpu return cpu, nil
} }
} }
} }
if err := s.Err(); err != nil {
return "", fmt.Errorf("reading input: %w", err)
}
return strings.TrimSpace(cpu) return strings.TrimSpace(cpu), nil
} }
func readGpuCache() (string, bool) { func readGpuCache() (string, bool) {