コード例 #1
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
    def run(self):
        queue = self.queue
        if not queue:
            return

        tasks = dict((task.name, task) for task in queue)
        while queue:
            task = queue.pop(0)
            for requirement in task.requires:
                if requirement not in tasks:
                    required_task = Tasks.get(requirement)(self)
                    tasks[requirement] = required_task
                    queue.append(required_task)
                task.dependencies.add(tasks[requirement])

        graph = dict((task, task.dependencies) for task in tasks.itervalues())
        self.queue = topological_sort(graph)

        while self.queue:
            task = self.queue.pop(0)
            try:
                self.execute(task)
            except TaskFailed:
                return False
            else:
                self.completed.append(task)
コード例 #2
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
    def run(self):
        queue = self.queue
        if not queue:
            return

        tasks = dict((task.name, task) for task in queue)
        while queue:
            task = queue.pop(0)
            for requirement in task.requires:
                if requirement not in tasks:
                    required_task = Tasks.get(requirement)(self)
                    tasks[requirement] = required_task
                    queue.append(required_task)
                task.dependencies.add(tasks[requirement])

        graph = dict((task, task.dependencies) for task in tasks.itervalues())
        self.queue = topological_sort(graph)

        while self.queue:
            task = self.queue.pop(0)
            try:
                self.execute(task)
            except TaskFailed:
                return False
            else:
                self.completed.append(task)
コード例 #3
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
    def execute(self, task, environment=None, **params):
        if environment or params:
            environment = self.environment.overlay(environment, **params)

        if isinstance(task, basestring):
            task = Tasks.get(task)(self)
        if task.independent:
            self._reset_path()

        self.context.append(task.name)
        try:
            if task.execute(environment) is False:
                raise TaskFailed()
        finally:
            self.context.pop()
コード例 #4
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
    def execute(self, task, environment=None, **params):
        if environment or params:
            environment = self.environment.overlay(environment, **params)

        if isinstance(task, basestring):
            task = Tasks.get(task)(self)
        if task.independent:
            self._reset_path()

        self.context.append(task.name)
        try:
            if task.execute(environment) is False:
                raise TaskFailed()
        finally:
            self.context.pop()
コード例 #5
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
 def _find_task(self, name):
     try:
         task = Tasks.get(name)
     except MultipleTasksError, exception:
         self.error('multiple tasks!!!')
         return False
コード例 #6
0
ファイル: runtime.py プロジェクト: siq-legacy/bake
 def _find_task(self, name):
     try:
         task = Tasks.get(name)
     except MultipleTasksError, exception:
         self.error('multiple tasks!!!')
         return False