mirror of
				https://github.com/avatao-content/test-tutorial-framework
				synced 2025-11-04 16:02:54 +00:00 
			
		
		
		
	Move Commands class to TFW library as TerminalCommands
This commit is contained in:
		@@ -1,8 +1,7 @@
 | 
			
		||||
from re import match
 | 
			
		||||
 | 
			
		||||
from tornado.ioloop import IOLoop
 | 
			
		||||
 | 
			
		||||
from tfw.components import WebideEventHandler, TerminadoEventHandler, ProcessManagingEventHandler, BashMonitor
 | 
			
		||||
from tfw.components import TerminalCommands
 | 
			
		||||
from tfw.networking import MessageSender, TFWServerConnector
 | 
			
		||||
from tfw.config import TFWENV
 | 
			
		||||
from tfw.config.logs import logging
 | 
			
		||||
@@ -15,33 +14,7 @@ def cenator(history):
 | 
			
		||||
    MessageSender().send('JOHN CENA', 'You\'ve executed "{}"'.format(history[-1]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Commands:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self._command_method_regex = r'^command_(.+)$'
 | 
			
		||||
        self.command_implemetations = {self._parse_command_name(fun): getattr(self, fun) for fun in dir(self)
 | 
			
		||||
                                       if callable(getattr(self, fun)) and self._is_command_implementation(fun)}
 | 
			
		||||
 | 
			
		||||
    def _is_command_implementation(self, method_name):
 | 
			
		||||
        return bool(self._match_command_regex(method_name))
 | 
			
		||||
 | 
			
		||||
    def _parse_command_name(self, method_name):
 | 
			
		||||
        try:
 | 
			
		||||
            return self._match_command_regex(method_name).groups()[0]
 | 
			
		||||
        except AttributeError:
 | 
			
		||||
            return ''
 | 
			
		||||
 | 
			
		||||
    def _match_command_regex(self, string):
 | 
			
		||||
        return match(self._command_method_regex, string)
 | 
			
		||||
 | 
			
		||||
    def callback(self, history):
 | 
			
		||||
        parts = history[-1].split()
 | 
			
		||||
        command = parts[0]
 | 
			
		||||
        if command in self.command_implemetations.keys():
 | 
			
		||||
            try:
 | 
			
		||||
                self.command_implemetations[command](*parts[1:])
 | 
			
		||||
            except IndexError:
 | 
			
		||||
                LOG.debug('Command "%s" failed!', command)
 | 
			
		||||
 | 
			
		||||
class TestCommands(TerminalCommands):
 | 
			
		||||
    def command_selectdir(self, *args):
 | 
			
		||||
        TFWServerConnector().send_to_eventhandler('webide',
 | 
			
		||||
                                                  {'data': {'command': 'selectdir',
 | 
			
		||||
@@ -66,7 +39,7 @@ if __name__ == '__main__':
 | 
			
		||||
                             directory=TFWENV.WEBIDE_WD, exclude=['*.pyc'])
 | 
			
		||||
    terminado = TerminadoEventHandler(key='shell', monitor=BashMonitor(TFWENV.HISTFILE))
 | 
			
		||||
    terminado.historymonitor.subscribe_callback(cenator)
 | 
			
		||||
    commands = Commands()
 | 
			
		||||
    commands = TestCommands()
 | 
			
		||||
    terminado.historymonitor.subscribe_callback(commands.callback)
 | 
			
		||||
    processmanager = ProcessManagingEventHandler(key='processmanager', dirmonitor=ide.monitor)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user