Sha256: effdff44d72403af28a20413a5d86c325d583c3504da2b00b7a97dec36da7741

Contents?: true

Size: 1.35 KB

Versions: 23

Compression:

Stored size: 1.35 KB

Contents

require_relative '../../misc'
require_relative '../../path'
require 'rake'

class Rake::FileTask
  class << self
    alias_method :old_define_task, :define_task
  end

  def self.define_task(file, *args, &block)
    @@files ||= []
    @@files << file
    old_define_task(file, *args, &block)
  end

  def self.files
    @@files
  end

  def self.clear_files
    @@files = []
  end
end

module ScoutRake
  class TaskNotFound < StandardError; end
  def self.run(rakefile, dir, task, &block)
    old_pwd = FileUtils.pwd

    Rake::Task.clear
    Rake::FileTask.clear_files

    t = nil
    pid = Process.fork{
      if block_given?
        TOPLEVEL_BINDING.receiver.instance_exec &block
      else
        if Path.is_filename? rakefile
          rakefile = rakefile.produce.find
          load rakefile
        else
          TmpFile.with_file(rakefile) do |tmpfile|
            load tmpfile
          end
        end
      end

      raise TaskNotFound if Rake::Task[task].nil?

      #Misc.pre_fork
      begin
        Misc.in_dir(dir) do
          Rake::Task[task].invoke

          Rake::Task.clear
          Rake::FileTask.clear_files
        end
      rescue Exception
        Log.error "Error in rake: #{$!.message}"
        Log.exception $!
        Kernel.exit! -1
      end
      Kernel.exit! 0
    }
    Process.waitpid(pid)
    raise "Rake failed" unless $?.success?

  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
scout-essentials-1.6.6 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.5 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.4 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.3 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.2 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.1 lib/scout/resource/produce/rake.rb
scout-essentials-1.6.0 lib/scout/resource/produce/rake.rb
scout-essentials-1.3.1 lib/scout/resource/produce/rake.rb
scout-essentials-1.3.0 lib/scout/resource/produce/rake.rb
scout-essentials-1.2.0 lib/scout/resource/produce/rake.rb
scout-essentials-1.1.1 lib/scout/resource/produce/rake.rb
scout-essentials-1.1.0 lib/scout/resource/produce/rake.rb
scout-essentials-1.0.0 lib/scout/resource/produce/rake.rb
scout-gear-9.1.0 lib/scout/resource/produce/rake.rb
scout-gear-9.0.0 lib/scout/resource/produce/rake.rb
scout-gear-8.1.0 lib/scout/resource/produce/rake.rb
scout-gear-8.0.0 lib/scout/resource/produce/rake.rb
scout-gear-7.3.0 lib/scout/resource/produce/rake.rb
scout-gear-7.2.0 lib/scout/resource/produce/rake.rb
scout-gear-7.1.0 lib/scout/resource/produce/rake.rb