Commit 4b0d9a28 authored by louiz’'s avatar louiz’

Add the pipe_cmd plugin

This plugins lets the user manipulate a poezio instance by writing commands
into a pipe, read by poezio which will execute them.
parent d11ea32f
"""
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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment