self.load_plugins()
self.load_drivers()
self.load_ui()
- self.command = engine.CommandEngine()
+ self.engine = engine.CommandEngine()
self.playlists = playlist.NoteIndexList()
def load_log(self):
def close(self):
self.config.write() # Does not preserve original comments
+ def run_command(self, command, arguments):
+ """Run `command` with `arguments` using
+ :meth:`~hooke.engine.CommandEngine.run_command`.
+
+ Allows for running commands without spawning another process
+ as in :class:`HookeRunner`.
+ """
+ self.engine.run_command(self, command, arguments)
+
+
class HookeRunner (object):
def run(self, hooke):
"""Run Hooke's main execution loop.
command_to_ui = multiprocessing.Queue()
manager = multiprocessing.Manager()
command = multiprocessing.Process(name='command engine',
- target=hooke.command.run, args=(hooke, ui_to_command, command_to_ui))
+ target=hooke.engine.run, args=(hooke, ui_to_command, command_to_ui))
command.start()
return (ui_to_command, command_to_ui, command)
'-c', '--command', dest='commands', metavar='COMMAND',
action='append', default=[],
help='Add a command line Hooke command to run.')
+ p.add_option(
+ '--command-no-exit', dest='command_exit',
+ action='store_false', default=True,
+ help="Don't exit after running a script or commands.")
options,arguments = p.parse_args()
if len(arguments) > 0:
print >> sys.stderr, 'More than 0 arguments to %s: %s' \
print version()
sys.exit(0)
if options.script != None:
- f = open(os.path.expanduser(options.script), 'r')
- options.commands.extend(f.readlines())
- f.close
+ with open(os.path.expanduser(options.script), 'r') as f:
+ options.commands.extend(f.readlines())
if len(options.commands) > 0:
try:
hooke = runner.run_lines(hooke, options.commands)
finally:
- hooke.close()
- sys.exit(0)
+ if options.command_exit == True:
+ hooke.close()
+ sys.exit(0)
try:
hooke = runner.run(hooke)