# This file is part of ipsutils. # ipsutils is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # ipsutils is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ipsutils. If not, see . class TaskController(object): def __init__(self): self.stack = [] def task(self, t): """ t: Task object """ self.stack.append(t) def do_tasks(self): """ FILO execution of tasks """ for stack_entry in self.stack: status = stack_entry.run() if type(status) == type(True): if not status: print("Internal error: {0:s}".format(status)) exit(status) else: if status > 0: print("exit: {0:d}".format(status)) exit(status) class NamedTask(object): def __init__(self, name, func, *args): self.name = name self.task = func self.task_args = args def run(self): print("+ Running task: {0:s}".format(self.name)) status = self.task(self.task_args) return status class InternalTask(NamedTask): pass