Sha256: 4b33ebbad18cac35d3332fe8785e0bec6115f2dc7d80a8972bd6ff66b6ef061a

Contents?: true

Size: 1.33 KB

Versions: 3

Compression:

Stored size: 1.33 KB

Contents

require 'digest'

module Fasten
  module Support
    module State
      attr_accessor :error, :ini, :fin, :dif, :runner
      attr_writer :state

      def state
        @state || :IDLE
      end

      def running?
        state == :RUNNING
      end

      def idle?
        state == :IDLE
      end

      def pausing?
        state == :PAUSING
      end

      def paused?
        state == :PAUSED
      end

      def quitting?
        state == :QUITTING
      end

      def last_stat
        return @last_stat if defined? @last_stat

        return {} unless @runner

        @last_stat = runner.stats_last(self)
      end

      def last_avg
        @last_avg ||= last_stat['avg']
      end

      def last_err
        @last_err ||= last_stat['err']
      end

      def deps
        return @deps if defined? @deps

        str = deps_str

        @deps = str && Digest::SHA1.hexdigest(str)
      end

      def deps_str
        if is_a? Fasten::Task
          if after.is_a? Array
            after.sort_by do |task|
              task.is_a?(Fasten::Task) ? task.name : task
            end&.join(', ')
          else
            after
          end
        elsif is_a? Fasten::Runner
          tasks.sort_by(&:name).map do |task|
            [task.name, task.deps_str].compact.join(': ')
          end.join("\n")
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fasten-0.14.2 lib/fasten/support/state.rb
fasten-0.14.0 lib/fasten/support/state.rb
fasten-0.12.8 lib/fasten/support/state.rb