Sha256: 220e6cdcdc90d512e4726f38156b5dc369328cc39f17624c330d9b03426873f3

Contents?: true

Size: 1.32 KB

Versions: 90

Compression:

Stored size: 1.32 KB

Contents

module Rake

  # Makefile loader to be used with the import file loader.  Use this to
  # import dependencies from make dependency tools:
  #
  #   require 'rake/loaders/makefile'
  #
  #   file ".depends.mf" => [SRC_LIST] do |t|
  #     sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}"
  #   end
  #
  #   import ".depends.mf"
  #
  # See {Importing Dependencies}[link:doc/rakefile_rdoc.html#label-Importing+Dependencies]
  # for further details.

  class MakefileLoader
    include Rake::DSL

    SPACE_MARK = "\0" # :nodoc:

    # Load the makefile dependencies in +fn+.
    def load(fn) # :nodoc:
      lines = File.read fn
      lines.gsub!(/\\ /, SPACE_MARK)
      lines.gsub!(/#[^\n]*\n/m, "")
      lines.gsub!(/\\\n/, " ")
      lines.each_line do |line|
        process_line(line)
      end
    end

    private

    # Process one logical line of makefile data.
    def process_line(line) # :nodoc:
      file_tasks, args = line.split(":", 2)
      return if args.nil?
      dependents = args.split.map { |d| respace(d) }
      file_tasks.scan(/\S+/) do |file_task|
        file_task = respace(file_task)
        file file_task => dependents
      end
    end

    def respace(str) # :nodoc:
      str.tr SPACE_MARK, " "
    end
  end

  # Install the handler
  Rake.application.add_loader("mf", MakefileLoader.new)
end

Version data entries

90 entries across 83 versions & 19 rubygems

Version Path
dadapush_client-1.0.1 vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.3.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.2.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.0.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.1.4.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.1.2.0 vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.30.7 vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
color_me_shop-1.0.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.1.1.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.4.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.3.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.2.0 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.2.0 vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.1.0 vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.21.4 vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
logstash-output-icinga-1.1.0 vendor/jruby/1.9/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
logstash-output-icinga-1.1.0 vendor/jruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.0.0.1 vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb