lib/fasten/task_manager.rb in fasten-0.12.2 vs lib/fasten/task_manager.rb in fasten-0.12.4

- old
+ new

@@ -1,19 +1,20 @@ module Fasten class TaskManager < Array # rubocop:disable Metrics/ClassLength - attr_reader :done, :failed, :pending, :running, :targets + attr_reader :done, :failed, :pending, :running, :targets, :runner - def initialize(targets: []) + def initialize(targets: [], runner:) super() @map = {} @done = [] @failed = [] @pending = [] @running = [] @targets = targets @waiting = nil + @runner = runner end def push(*items) items.each do |item| self << item @@ -147,13 +148,23 @@ def move_pending_to_waiting to_move = pending.select { |task| task.depends.count.zero? } @pending -= to_move @waiting += to_move - @waiting.sort_by!.with_index do |task, index| - task.state = :WAIT - last_avg = task.last && task.last['avg'] || 0 - [-task.run_score, -last_avg.to_f, index] + case @runner.priority + when :dependants + @waiting.sort_by!.with_index do |task, index| + task.state = :WAIT + [-task.run_score, index] + end + when :dependants_avg + @waiting.sort_by!.with_index do |task, index| + task.state = :WAIT + last_avg = task.last && task.last['avg'] || 0 + [-task.run_score, -last_avg.to_f, index] + end + else + raise "Unknown priority #{@runner.priority}" end end end end