Sha256: e6b563e54edbe4f05ffddf9d7b56bf16fb030fa6560346866e2eb86a1498b137

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

require 'rake'

module FFI
    module Compiler
        class MultiFileTask < Rake::MultiTask
            def needed?
                begin
                    @application.options.build_all || out_of_date?(File.mtime(name))
                rescue Errno::ENOENT
                    true
                end
            end

            def timestamp
                begin
                    File.mtime(name)
                rescue Errno::ENOENT
                    Rake::LATE
                end
            end

            def invoke_with_call_chain(task_args, invocation_chain)
              return unless needed?
              super
            end

            private

            def out_of_date?(timestamp)
                all_prerequisite_tasks.any? do |prereq|
                    prereq_task = application[prereq, @scope]
                    if prereq_task.instance_of?(Rake::FileTask)
                        File.exist?(prereq_task.name) && prereq_task.timestamp > timestamp
                    else
                        prereq_task.needed?
                    end
                end
            end
        end
    end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ffi-compiler-1.3.1 lib/ffi-compiler/multi_file_task.rb
ffi-compiler2-2.3.0 lib/ffi-compiler/multi_file_task.rb