Sha256: e85c79cdddf6d1df2a302d4c988fda0820194d2648042d5cd3a72600ed174695

Contents?: true

Size: 1.54 KB

Versions: 116

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true
require "rake/task"
require "rake/early_time"

module Rake

  # A FileTask is a task that includes time based dependencies.  If any of a
  # FileTask's prerequisites have a timestamp that is later than the file
  # represented by this task, then the file must be rebuilt (using the
  # supplied actions).
  #
  class FileTask < Task

    # Is this file task needed?  Yes if it doesn't exist, or if its time stamp
    # is out of date.
    def needed?
      begin
        out_of_date?(File.mtime(name)) || @application.options.build_all
      rescue Errno::ENOENT
        true
      end
    end

    # Time stamp for file task.
    def timestamp
      begin
        File.mtime(name)
      rescue Errno::ENOENT
        Rake::LATE
      end
    end

    private

    # Are there any prerequisites with a later time than the given time stamp?
    def out_of_date?(stamp)
      all_prerequisite_tasks.any? { |prereq|
        prereq_task = application[prereq, @scope]
        if prereq_task.instance_of?(Rake::FileTask)
          prereq_task.timestamp > stamp || @application.options.build_all
        else
          prereq_task.timestamp > stamp
        end
      }
    end

    # ----------------------------------------------------------------
    # Task class methods.
    #
    class << self
      # Apply the scope to the task name according to the rules for this kind
      # of task.  File based tasks ignore the scope when creating the name.
      def scope_name(scope, task_name)
        Rake.from_pathname(task_name)
      end
    end
  end
end

Version data entries

116 entries across 110 versions & 16 rubygems

Version Path
es_cli-0.1.0 vendor/bundle/ruby/3.1.0/gems/rake-13.2.1/lib/rake/file_task.rb
direct7-0.0.18 vendor/bundle/ruby/3.0.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.18 vendor/bundle/ruby/2.7.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.17 vendor/bundle/ruby/3.0.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.17 vendor/bundle/ruby/2.7.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.16 vendor/bundle/ruby/3.0.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.16 vendor/bundle/ruby/2.7.0/gems/rake-13.1.0/lib/rake/file_task.rb
fluent-plugin-nuopenlineage-light-0.1.0 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
fluent-plugin-openlineage-light-0.1.4 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
fluent-plugin-openlineage-light-0.1.3 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
fluent-plugin-openlineage-0.1.0 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/rake-13.2.1/lib/rake/file_task.rb
katalyst-govuk-formbuilder-1.9.2 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/rake-13.1.0/lib/rake/file_task.rb
bison-0.1.0 vendor/bundle/ruby/3.2.0/gems/rake-13.2.1/lib/rake/file_task.rb
rake-13.2.1 lib/rake/file_task.rb
rake-13.2.0 lib/rake/file_task.rb
direct7-0.0.13 vendor/bundle/ruby/3.0.0/gems/rake-13.1.0/lib/rake/file_task.rb
direct7-0.0.13 vendor/bundle/ruby/2.7.0/gems/rake-13.1.0/lib/rake/file_task.rb