summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaleb Bassi <calebjbassi@gmail.com>2018-12-13 21:59:45 -0800
committerCaleb Bassi <calebjbassi@gmail.com>2018-12-13 21:59:45 -0800
commit625b16c9167b1701beb693ed4e17f20a2aaffcdd (patch)
tree7898b00b0a1701a058e86d956d55d7a057f6592c
parent23b961bcfaa02a76d8f81ddbb3bae7d5ed3bf883 (diff)
Close #85
-rw-r--r--src/widgets/cpu.go22
-rw-r--r--src/widgets/disk.go1
-rw-r--r--src/widgets/net.go1
-rw-r--r--src/widgets/proc_linux.go14
-rw-r--r--src/widgets/proc_other.go14
-rw-r--r--src/widgets/proc_windows.go1
-rw-r--r--src/widgets/temp_darwin.go1
-rw-r--r--src/widgets/temp_other.go1
-rw-r--r--src/widgets/temp_windows.go1
9 files changed, 38 insertions, 18 deletions
diff --git a/src/widgets/cpu.go b/src/widgets/cpu.go
index 91419cb..988e8a8 100644
--- a/src/widgets/cpu.go
+++ b/src/widgets/cpu.go
@@ -76,9 +76,10 @@ func (self *CPU) update() {
percent, err := psCPU.Percent(self.interval, false)
if err != nil {
log.Printf("failed to get average CPU usage percent from gopsutil: %v. self.interval: %v. percpu: %v", err, self.interval, false)
+ } else {
+ self.Data["AVRG"] = append(self.Data["AVRG"], percent[0])
+ self.Labels["AVRG"] = fmt.Sprintf("%3.0f%%", percent[0])
}
- self.Data["AVRG"] = append(self.Data["AVRG"], percent[0])
- self.Labels["AVRG"] = fmt.Sprintf("%3.0f%%", percent[0])
}()
}
@@ -87,15 +88,16 @@ func (self *CPU) update() {
percents, err := psCPU.Percent(self.interval, true)
if err != nil {
log.Printf("failed to get CPU usage percents from gopsutil: %v. self.interval: %v. percpu: %v", err, self.interval, true)
- }
- if len(percents) == self.Count {
- for i, percent := range percents {
- k := fmt.Sprintf(self.formatString, i)
- self.Data[k] = append(self.Data[k], percent)
- self.Labels[k] = fmt.Sprintf("%3.0f%%", percent)
- }
} else {
- log.Printf("error: number of CPU usage percents from gopsutil doesn't match CPU count. percents: %v. self.Count: %v", percents, self.Count)
+ if len(percents) != self.Count {
+ log.Printf("error: number of CPU usage percents from gopsutil doesn't match CPU count. percents: %v. self.Count: %v", percents, self.Count)
+ } else {
+ for i, percent := range percents {
+ k := fmt.Sprintf(self.formatString, i)
+ self.Data[k] = append(self.Data[k], percent)
+ self.Labels[k] = fmt.Sprintf("%3.0f%%", percent)
+ }
+ }
}
}()
}
diff --git a/src/widgets/disk.go b/src/widgets/disk.go
index 4950c87..e8d8f68 100644
--- a/src/widgets/disk.go
+++ b/src/widgets/disk.go
@@ -56,6 +56,7 @@ func (self *Disk) update() {
Partitions, err := psDisk.Partitions(false)
if err != nil {
log.Printf("failed to get disk partitions from gopsutil: %v", err)
+ return
}
// add partition if it's new
diff --git a/src/widgets/net.go b/src/widgets/net.go
index 6902c0f..c47ae25 100644
--- a/src/widgets/net.go
+++ b/src/widgets/net.go
@@ -48,6 +48,7 @@ func (self *Net) update() {
interfaces, err := psNet.IOCounters(true)
if err != nil {
log.Printf("failed to get network activity from gopsutil: %v", err)
+ return
}
var curRecvTotal uint64
var curSentTotal uint64
diff --git a/src/widgets/proc_linux.go b/src/widgets/proc_linux.go
index dd3cae5..4163391 100644
--- a/src/widgets/proc_linux.go
+++ b/src/widgets/proc_linux.go
@@ -1,6 +1,7 @@
package widgets
import (
+ "fmt"
"log"
"os/exec"
"strconv"
@@ -8,7 +9,12 @@ import (
)
func (self *Proc) update() {
- processes := Processes()
+ processes, err := Processes()
+ if err != nil {
+ log.Printf("failed to retrieve processes: %v", err)
+ return
+ }
+
// have to iterate like this in order to actually change the value
for i := range processes {
processes[i].CPU /= self.cpuCount
@@ -20,10 +26,10 @@ func (self *Proc) update() {
self.Sort()
}
-func Processes() []Process {
+func Processes() ([]Process, error) {
output, err := exec.Command("ps", "-axo", "pid:10,comm:50,pcpu:5,pmem:5,args").Output()
if err != nil {
- log.Printf("failed to execute 'ps' command: %v", err)
+ return nil, fmt.Errorf("failed to execute 'ps' command: %v", err)
}
// converts to []string, removing trailing newline and header
@@ -52,5 +58,5 @@ func Processes() []Process {
}
processes = append(processes, process)
}
- return processes
+ return processes, nil
}
diff --git a/src/widgets/proc_other.go b/src/widgets/proc_other.go
index 6f66dfa..7bb834b 100644
--- a/src/widgets/proc_other.go
+++ b/src/widgets/proc_other.go
@@ -3,6 +3,7 @@
package widgets
import (
+ "fmt"
"log"
"os/exec"
"strconv"
@@ -10,7 +11,12 @@ import (
)
func (self *Proc) update() {
- processes := Processes()
+ processes, err := Processes()
+ if err != nil {
+ log.Printf("failed to retrieve processes: %v", err)
+ return
+ }
+
// have to iterate like this in order to actually change the value
for i := range processes {
processes[i].CPU /= self.cpuCount
@@ -22,10 +28,10 @@ func (self *Proc) update() {
self.Sort()
}
-func Processes() []Process {
+func Processes() ([]Process, error) {
output, err := exec.Command("ps", "-axo", "pid,comm,pcpu,pmem,args").Output()
if err != nil {
- log.Printf("failed to execute 'ps' command: %v", err)
+ return nil, fmt.Errorf("failed to execute 'ps' command: %v", err)
}
// converts to []string and removes the header
strOutput := strings.Split(strings.TrimSpace(string(output)), "\n")[1:]
@@ -53,5 +59,5 @@ func Processes() []Process {
}
processes = append(processes, process)
}
- return processes
+ return processes, nil
}
diff --git a/src/widgets/proc_windows.go b/src/widgets/proc_windows.go
index aef97af..f486244 100644
--- a/src/widgets/proc_windows.go
+++ b/src/widgets/proc_windows.go
@@ -10,6 +10,7 @@ func (self *Proc) update() {
psProcesses, err := psProc.Processes()
if err != nil {
log.Printf("failed to get processes from gopsutil: %v", err)
+ return
}
processes := make([]Process, len(psProcesses))
for i, psProcess := range psProcesses {
diff --git a/src/widgets/temp_darwin.go b/src/widgets/temp_darwin.go
index 9343deb..c1ef665 100644
--- a/src/widgets/temp_darwin.go
+++ b/src/widgets/temp_darwin.go
@@ -57,6 +57,7 @@ func (self *Temp) update() {
sensors, err := SensorsTemperatures()
if err != nil {
log.Printf("failed to get sensors from CGO: %v", err)
+ return
}
for _, sensor := range sensors {
if sensor.Temperature != 0 {
diff --git a/src/widgets/temp_other.go b/src/widgets/temp_other.go
index fa33383..0e5de36 100644
--- a/src/widgets/temp_other.go
+++ b/src/widgets/temp_other.go
@@ -14,6 +14,7 @@ func (self *Temp) update() {
sensors, err := psHost.SensorsTemperatures()
if err != nil {
log.Printf("failed to get sensors from gopsutil: %v", err)
+ return
}
for _, sensor := range sensors {
// only sensors with input in their name are giving us live temp info
diff --git a/src/widgets/temp_windows.go b/src/widgets/temp_windows.go
index c217552..8fabb19 100644
--- a/src/widgets/temp_windows.go
+++ b/src/widgets/temp_windows.go
@@ -11,6 +11,7 @@ func (self *Temp) update() {
sensors, err := psHost.SensorsTemperatures()
if err != nil {
log.Printf("failed to get sensors from gopsutil: %v", err)
+ return
}
for _, sensor := range sensors {
if sensor.Temperature != 0 {