package collectors import ( "bufio" "log" "os" "strconv" ) func batteryCapacity() (capacity int) { const filename string = "/sys/class/power_supply/BAT0/capacity" var rawCapacity string file, err := os.Open(filename) if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) if scanner.Scan() { rawCapacity = scanner.Text() } if err := scanner.Err(); err != nil { log.Fatal(err) } capacity, err = strconv.Atoi(rawCapacity) if err != nil { log.Fatal(err) } return capacity } func batteryStatus() (status string) { const filename string = "/sys/class/power_supply/BAT0/status" file, err := os.Open(filename) if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) if scanner.Scan() { status = scanner.Text() } if err := scanner.Err(); err != nil { log.Fatal(err) } return status } func batteryInfo() (capacity int, status string) { const statusFile string = "/sys/class/power_supply/BAT0/status" capacity = batteryCapacity() status = batteryStatus() return capacity, status }