Persist schedule. Drop shlex.
This commit is contained in:
parent
e05c892eaf
commit
d5bfbc27b6
29
eufy.py
29
eufy.py
|
@ -3,7 +3,7 @@
|
|||
from cmd import Cmd
|
||||
from datetime import datetime, time
|
||||
from inspect import signature, Signature
|
||||
from shlex import shlex
|
||||
import os
|
||||
from time import sleep
|
||||
|
||||
|
||||
|
@ -58,7 +58,12 @@ class EufyIR(EufyRawIR):
|
|||
RETURN_BASE = 0xef
|
||||
|
||||
def __init__(self):
|
||||
self._schedule = 0xff
|
||||
self._schedule_file = os.path.expanduser('~/.eufy-schedule')
|
||||
try:
|
||||
with open(os.path.expanduser(self._SCHEDULE_FILE), 'r') as f:
|
||||
self._schedule = int(f.read(5))
|
||||
except:
|
||||
self._schedule = 0xff
|
||||
|
||||
def _message(self, code):
|
||||
now = datetime.now()
|
||||
|
@ -119,11 +124,17 @@ class EufyIR(EufyRawIR):
|
|||
self.send(self.SET_TIME)
|
||||
|
||||
def setSchedule(self, t):
|
||||
# FIXME: properly store schedule
|
||||
self.send(self.SET_SCHEDULE, t)
|
||||
self._schedule = t.hour * 4 + t.minute // 15
|
||||
with open(self._schedule_file, 'w') as f:
|
||||
f.write(str(self._schedule))
|
||||
self.send(self.SET_SCHEDULE)
|
||||
|
||||
def cancelSchedule(self):
|
||||
# FIXME: properly store schedule
|
||||
self._schedule = 0xff
|
||||
try:
|
||||
os.remove(self._schedule_file)
|
||||
except:
|
||||
pass
|
||||
self.send(self.CANCEL_SCHEDULE)
|
||||
|
||||
def returnBase(self):
|
||||
|
@ -132,11 +143,11 @@ class EufyIR(EufyRawIR):
|
|||
|
||||
def lexer(f):
|
||||
def g(self, args):
|
||||
argv = tuple(x.lower() for x in shlex(args))
|
||||
argv = tuple(x.lower() for x in args.split())
|
||||
s = signature(f)
|
||||
maxargs = len(s.parameters)
|
||||
minargs = len([x for _,x in s.parameters.items() if x.default is not Signature.empty])
|
||||
if minargs <= len(argv) + 1 <= maxargs:
|
||||
maxargs = len(s.parameters) - 1
|
||||
minargs = len([x for _,x in s.parameters.items() if x.default is Signature.empty]) - 1
|
||||
if minargs <= len(argv) <= maxargs:
|
||||
return f(self, *argv)
|
||||
else:
|
||||
self.stdout.write("*** Invalid arguments for {}\n".format(f.__name__[3:]))
|
||||
|
|
Loading…
Reference in New Issue