summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/pipe_cmd.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/plugins/pipe_cmd.py b/plugins/pipe_cmd.py
new file mode 100644
index 00000000..c73bdea5
--- /dev/null
+++ b/plugins/pipe_cmd.py
@@ -0,0 +1,42 @@
+"""
+
+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