43 lines
935 B
Python
43 lines
935 B
Python
|
"""
|
||
|
|
||
|
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)
|
||
|
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
|