2016-07-07 13:43:31 -04:00
|
|
|
#!/bin/python
|
2016-07-08 20:48:22 -04:00
|
|
|
import importlib.util
|
|
|
|
import glob
|
|
|
|
import os
|
2016-07-08 06:25:27 -04:00
|
|
|
|
|
|
|
class commandManager():
|
|
|
|
def __init__(self):
|
2016-07-08 06:26:00 -04:00
|
|
|
pass
|
2016-07-10 09:43:15 -04:00
|
|
|
|
|
|
|
def loadCommands(self, environment, section='commands'):
|
|
|
|
commandFolder = "commands/" + section +"/"
|
2016-07-08 20:48:22 -04:00
|
|
|
commandList = glob.glob(commandFolder+'*')
|
|
|
|
for currCommand in commandList:
|
|
|
|
try:
|
|
|
|
fileName, fileExtension = os.path.splitext(currCommand)
|
|
|
|
fileName = fileName.split('/')[-1]
|
|
|
|
if fileName in ['__init__','__pycache__']:
|
|
|
|
continue
|
2016-07-10 09:43:15 -04:00
|
|
|
if fileExtension.lower() == '.py':
|
2016-07-08 20:48:22 -04:00
|
|
|
spec = importlib.util.spec_from_file_location(fileName, currCommand)
|
|
|
|
command_mod = importlib.util.module_from_spec(spec)
|
|
|
|
spec.loader.exec_module(command_mod)
|
2016-07-10 09:43:15 -04:00
|
|
|
environment['commands'][section][fileName] = command_mod.command()
|
2016-07-08 20:48:22 -04:00
|
|
|
except:
|
|
|
|
continue
|
2016-07-08 12:33:32 -04:00
|
|
|
return environment
|
2016-07-08 20:48:22 -04:00
|
|
|
|
2016-07-10 09:43:15 -04:00
|
|
|
def executeCommand(self, environment, currCommand, section = 'commands'):
|
2016-07-08 12:33:32 -04:00
|
|
|
if self.isCommandDefined(environment):
|
2016-07-10 17:02:17 -04:00
|
|
|
try:
|
|
|
|
environ = environment['commands'][section][currCommand].run(environment)
|
|
|
|
if environ != None:
|
|
|
|
environment = environ
|
|
|
|
except:
|
2016-07-08 19:10:01 -04:00
|
|
|
pass
|
2016-07-08 12:33:32 -04:00
|
|
|
environment['commandInfo']['currCommand'] = ''
|
|
|
|
return environment
|
|
|
|
|
|
|
|
def executeNextCommand(self, environment):
|
|
|
|
pass
|
|
|
|
def isShortcutDefined(self, environment):
|
|
|
|
return( environment['input']['currShortcutString'] in environment['bindings'])
|
|
|
|
|
|
|
|
def getCommandForShortcut(self, environment):
|
|
|
|
if not self.isShortcutDefined(environment):
|
|
|
|
return environment
|
|
|
|
environment['commandInfo']['currCommand'] = environment['bindings'][environment['input']['currShortcutString']]
|
|
|
|
return environment
|
|
|
|
|
|
|
|
def isCommandDefined(self, environment):
|
2016-07-10 09:43:15 -04:00
|
|
|
return( environment['commandInfo']['currCommand'] in environment['commands']['commands'])
|
2016-07-08 12:33:32 -04:00
|
|
|
|
|
|
|
def enqueueCommand(self, environment):
|
|
|
|
if not self.isCommandDefined(environment):
|
|
|
|
return False
|
|
|
|
return True
|