From 4ae8753095031fa1fe1acc72cc08b048e12da861 Mon Sep 17 00:00:00 2001 From: Mallory Hancock Date: Thu, 12 Sep 2019 10:14:56 -0700 Subject: [PATCH] preliminary work for class based plugins #27 --- pinhook/plugin.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pinhook/plugin.py b/pinhook/plugin.py index 3f39028..614b214 100644 --- a/pinhook/plugin.py +++ b/pinhook/plugin.py @@ -1,3 +1,4 @@ +from abc import ABC, abstractmethod from enum import Enum from functools import wraps @@ -23,6 +24,35 @@ class Output: return msg +class Command(ABC): + def __init__(self, **kwargs): + self.cmd = kwargs.get('cmd') + self.help = kwargs.get('help', '') + self.ops = kwargs.get('ops', False) + self.ops_msg = kwargs.get('ops_msg', '') + self.enabled = True + self.add_command() + + @abstractmethod + def run(self, msg): + pass + + def add_command(self): + cmds[self.cmd] = { + 'run': self.run, + 'help': self.help, + 'enabled': self.enabled, + } + if self.ops: + cmds[self.cmd].update({ + 'ops': self.ops, + 'ops_msg': self.ops_msg, + }) + + def __str__(self): + return self.cmd + + def action(msg): return Output(OutputType.Action, msg)