2014-07-05 15:05:17 +00:00
|
|
|
"""
|
|
|
|
|
|
|
|
This plugins allows commands to be sent to poezio via a named pipe.
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
from plugin import BasePlugin
|
|
|
|
import threading
|
|
|
|
import os
|
|
|
|
import stat
|
|
|
|
import logging
|
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
PIPENAME = "/tmp/poezio.fifo"
|
|
|
|
|
|
|
|
class Plugin(BasePlugin):
|
|
|
|
def init(self):
|
|
|
|
self.stop = False
|
|
|
|
|
|
|
|
self.pipename = self.config.get("pipename", PIPENAME)
|
|
|
|
|
|
|
|
if not os.path.exists(self.pipename):
|
|
|
|
os.mkfifo(self.pipename)
|
|
|
|
|
|
|
|
if not stat.S_ISFIFO(os.stat(self.pipename).st_mode):
|
|
|
|
log.error("File %s is not a fifo file" % self.pipename)
|
|
|
|
raise TypeError
|
|
|
|
|
|
|
|
thread = threading.Thread(target=self.main_loop)
|
2014-07-05 15:07:02 +00:00
|
|
|
thread.setDaemon(True)
|
2014-07-05 15:05:17 +00:00
|
|
|
thread.start()
|
|
|
|
|
|
|
|
def main_loop(self):
|
|
|
|
while not self.stop:
|
|
|
|
fd = open(self.pipename, 'r')
|
|
|
|
line = fd.read().strip()
|
|
|
|
self.api.run_command(line)
|
|
|
|
fd.close()
|
|
|
|
|
|
|
|
def cleanup(self):
|
|
|
|
self.stop = True
|