add full support for command-based plugins (#27)
This commit is contained in:
		
							parent
							
								
									1aa17eebfb
								
							
						
					
					
						commit
						9797f731a7
					
				| @ -1,7 +1,7 @@ | |||||||
| from enum import Enum | from enum import Enum | ||||||
| from functools import wraps | from functools import wraps | ||||||
| 
 | 
 | ||||||
| 
 | plugins = {} | ||||||
| cmds = {} | cmds = {} | ||||||
| lstnrs = {} | lstnrs = {} | ||||||
| 
 | 
 | ||||||
| @ -22,16 +22,44 @@ class Output: | |||||||
|         except AttributeError: |         except AttributeError: | ||||||
|             return msg |             return msg | ||||||
| 
 | 
 | ||||||
|  | class _BasePlugin: | ||||||
|  |     enabled = True | ||||||
| 
 | 
 | ||||||
| class Command: |     def enable(self): | ||||||
|  |         self.enabled = True | ||||||
|  | 
 | ||||||
|  |     def disable(self): | ||||||
|  |         self.enabled = False | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Listener(_BasePlugin): | ||||||
|  |     def __init__(self, name, run=None): | ||||||
|  |         self.name = name | ||||||
|  |         if run: | ||||||
|  |             self.run = run | ||||||
|  | 
 | ||||||
|  |     def __str__(self): | ||||||
|  |         return self.name | ||||||
|  | 
 | ||||||
|  |     def run(self): | ||||||
|  |         pass | ||||||
|  | 
 | ||||||
|  |     def add_listener(self): | ||||||
|  |         lstnrs[self.name] = self | ||||||
|  |         plugins[self.name] = self | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Command(_BasePlugin): | ||||||
|     def __init__(self, cmd, **kwargs): |     def __init__(self, cmd, **kwargs): | ||||||
|         self.cmd = cmd |         self.cmd = cmd | ||||||
|         self.help_txt = kwargs.get('help_txt', '') |         self.help_text = kwargs.get('help_text', 'N/A') | ||||||
|         self.ops = kwargs.get('ops', False) |         self.ops = kwargs.get('ops', False) | ||||||
|         self.ops_msg = kwargs.get('ops_msg', '') |         self.ops_msg = kwargs.get('ops_msg', '') | ||||||
|         self.enabled = True |  | ||||||
|         self.run = kwargs.get('run', self.run) |         self.run = kwargs.get('run', self.run) | ||||||
| 
 | 
 | ||||||
|  |     def __str__(self): | ||||||
|  |         return self.cmd | ||||||
|  |      | ||||||
|     def run(self, msg): |     def run(self, msg): | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
| @ -40,20 +68,12 @@ class Command: | |||||||
|         self.ops_msg = ops_msg |         self.ops_msg = ops_msg | ||||||
| 
 | 
 | ||||||
|     def update_plugin(self, **kwargs): |     def update_plugin(self, **kwargs): | ||||||
|         self.help_text = kwargs.get('help_text') |         self.help_text = kwargs.get('help_text', 'N/A') | ||||||
|         self.run = kwargs.get('run', self.run) |         self.run = kwargs.get('run', self.run) | ||||||
| 
 | 
 | ||||||
|     def add_command(self): |     def add_command(self): | ||||||
|         cmds[self.cmd] = self |         cmds[self.cmd] = self | ||||||
| 
 |         plugins[self.cmd] = self | ||||||
|     def enable(self): |  | ||||||
|         self.enabled = True |  | ||||||
| 
 |  | ||||||
|     def disable(self): |  | ||||||
|         self.enabled = False |  | ||||||
| 
 |  | ||||||
|     def __str__(self): |  | ||||||
|         return self.cmd |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def action(msg): | def action(msg): | ||||||
| @ -66,7 +86,7 @@ def message(msg): | |||||||
| 
 | 
 | ||||||
| def _add_command(command, help_text, func): | def _add_command(command, help_text, func): | ||||||
|     if command not in cmds: |     if command not in cmds: | ||||||
|         cmds[command] = Command(command, help_txt=help_text, run=func) |         Command(command, help_text=help_text, run=func).add_command() | ||||||
|     else: |     else: | ||||||
|         cmds[command].update_plugin(help_text=help_text, run=func) |         cmds[command].update_plugin(help_text=help_text, run=func) | ||||||
|     print(cmds) |     print(cmds) | ||||||
| @ -74,13 +94,13 @@ def _add_command(command, help_text, func): | |||||||
| 
 | 
 | ||||||
| def _ops_plugin(command, ops_msg, func): | def _ops_plugin(command, ops_msg, func): | ||||||
|     if command not in cmds: |     if command not in cmds: | ||||||
|         cmds[command] = Command(command, ops=True, ops_msg=ops_msg) |         Command(command, ops=True, ops_msg=ops_msg).add_command() | ||||||
|     else: |     else: | ||||||
|         cmds[command].enable_ops(ops_msg) |         cmds[command].enable_ops(ops_msg) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _add_listener(name, func): | def _add_listener(name, func): | ||||||
|     lstnrs[name] = func |     Listener(name, run=func).add_listener() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def clear_plugins(): | def clear_plugins(): | ||||||
| @ -88,7 +108,7 @@ def clear_plugins(): | |||||||
|     lstnrs.clear() |     lstnrs.clear() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def register(command, help_text=None): | def register(command, help_text='N/A'): | ||||||
|     @wraps(command) |     @wraps(command) | ||||||
|     def register_for_command(func): |     def register_for_command(func): | ||||||
|         _add_command(command, help_text, func) |         _add_command(command, help_text, func) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user