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
cloudsmith-api-1.30.0 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.57.1 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.54.15 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.53.79 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.53.17 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.53.3 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.53.1 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.52.121 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.52.92 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
logstash-filter-csharp-0.2.1 vendor/bundle/jruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
logstash-filter-csharp-0.2.0 vendor/bundle/jruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.52.79 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.52.5 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.52.0 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.51.93 vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
files.com-1.0.1 vendor/bundle/ruby/2.5.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.51.38 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.51.37 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb
cloudsmith-api-0.51.34 vendor/bundle/ruby/2.6.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb