Sha256: 03bfacbd268ef0a1ab6533aa43b7715a493ceacd5f1c31f064a32d1c0b7a3627

Contents?: true

Size: 898 Bytes

Versions: 7

Compression:

Stored size: 898 Bytes

Contents

require 'rake'
module Rake
  class TaskNotFound < StandardError; end
  def self.run(rakefile, dir, task)
    old_pwd = FileUtils.pwd

    Rake::FileTask.module_eval do
      if not self.respond_to? :old_define_task
        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
      end

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

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

    if block_given?
      yield
    else
      load rakefile
    end

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

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

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

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rbbt-util-4.4.0 lib/rbbt/resource/rake.rb
rbbt-util-4.3.0 lib/rbbt/resource/rake.rb
rbbt-util-4.2.0 lib/rbbt/resource/rake.rb
rbbt-util-4.1.0 lib/rbbt/resource/rake.rb
rbbt-util-4.0.2 lib/rbbt/resource/rake.rb
rbbt-util-4.0.1 lib/rbbt/resource/rake.rb
rbbt-util-4.0.0 lib/rbbt/resource/rake.rb