Merge pull request #337 from hobarrera/solaar-error-improvements
Improve solaar error handling/display
This commit is contained in:
commit
1548f521bc
@ -2,6 +2,17 @@ from i3pystatus import IntervalModule
|
||||
from i3pystatus.core.command import run_through_shell
|
||||
|
||||
|
||||
class DeviceNotFound(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class NoBatteryStatus(Exception):
|
||||
message = None
|
||||
|
||||
def __init__(self, message):
|
||||
self.message = message
|
||||
|
||||
|
||||
class Solaar(IntervalModule):
|
||||
"""
|
||||
Shows status and load percentage of bluetooth-device
|
||||
@ -29,8 +40,8 @@ class Solaar(IntervalModule):
|
||||
for line in out.split('\n'):
|
||||
if line.count(self.nameOfDevice) > 0 and line.count(':') > 0:
|
||||
numberOfDevice = line.split(':')[0]
|
||||
return(0, numberOfDevice)
|
||||
return(1, 0)
|
||||
return numberOfDevice
|
||||
raise DeviceNotFound()
|
||||
|
||||
def findBatteryStatus(self, numberOfDevice):
|
||||
command = 'solaar-cli show -v %s' % (numberOfDevice)
|
||||
@ -39,24 +50,25 @@ class Solaar(IntervalModule):
|
||||
if line.count('Battery') > 0:
|
||||
if line.count(':') > 0:
|
||||
batterystatus = line.split(':')[1].strip().strip(",")
|
||||
return(0, batterystatus)
|
||||
return batterystatus
|
||||
elif line.count('offline'):
|
||||
raise NoBatteryStatus('offline')
|
||||
else:
|
||||
return(1, 0)
|
||||
return(1, 0)
|
||||
raise NoBatteryStatus('unknown')
|
||||
raise NoBatteryStatus('unknown/error')
|
||||
|
||||
def run(self):
|
||||
self.output = {}
|
||||
rcfindDeviceNumber = self.findDeviceNumber()
|
||||
if rcfindDeviceNumber[0] != 0:
|
||||
output = "problem finding device %s" % (self.nameOfDevice)
|
||||
self.output['color'] = self.error_color
|
||||
else:
|
||||
numberOfDevice = rcfindDeviceNumber[1]
|
||||
rcfindBatteryStatus = self.findBatteryStatus(numberOfDevice)
|
||||
if rcfindBatteryStatus[0] != 0:
|
||||
output = "problem finding battery status device %s" % (self.nameOfDevice)
|
||||
self.output['color'] = self.error_color
|
||||
else:
|
||||
output = self.findBatteryStatus(self.findDeviceNumber()[1])[1]
|
||||
|
||||
try:
|
||||
device_number = self.findDeviceNumber()
|
||||
output = self.findBatteryStatus(device_number)
|
||||
self.output['color'] = self.color
|
||||
except DeviceNotFound:
|
||||
output = "device absent"
|
||||
self.output['color'] = self.error_color
|
||||
except NoBatteryStatus as e:
|
||||
output = e.message
|
||||
self.output['color'] = self.error_color
|
||||
|
||||
self.output['full_text'] = output
|
||||
|
Loading…
Reference in New Issue
Block a user