123456789_123456789_123456789_123456789_123456789_

Class: Rake::MakefileLoader

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
Inherits: Object
Defined in: lib/rake/loaders/makefile.rb

Overview

Makefile loader to be used with the import file loader.

Constant Summary

::FileUtils - Included

LN_SUPPORTED, RUBY

FileUtilsExt - Included

DEFAULT

Instance Method Summary

DSL - Included

#desc

Describes the next rake task.

#directory

Declare a set of files tasks to create the given directories on demand.

#file

Declare a file task.

#file_create

Declare a file creation task.

#import

Import the partial Rakefiles fn.

#multitask

Declare a task that performs its prerequisites in parallel.

#namespace

Create a new rake namespace and use it for evaluating the given block.

#rule

Declare a rule for auto-tasks.

#task

Declare a basic task.

FileUtilsExt - Included

#nowrite

Get/set the nowrite flag controlling output from the ::FileUtils utilities.

#rake_check_options

Check that the options do not contain options not listed in optdecl.

#rake_merge_option

Merge the given options with the default values.

#rake_output_message

Send the message to the default rake output (which is $stderr).

#verbose

Get/set the verbose flag controlling output from the ::FileUtils utilities.

#when_writing

Use this function to prevent potentially destructive ruby code from running when the :nowrite flag is set.

::FileUtils - Included

#ruby

Run a Ruby interpreter with the given arguments.

#safe_ln

Attempt to do a normal file link, but fall back to a copy if the link fails.

#sh

Run the system command cmd.

#split_all

Split a file path into individual directory names.

Instance Method Details

#load(fn)

Load the makefile dependencies in fn.

[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 10

def load(fn)
  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

#process_line(line) (private)

Process one logical line of makefile data.

[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 23

def process_line(line)
  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

#respace(str) (private)

[ GitHub ]

  
# File 'lib/rake/loaders/makefile.rb', line 33

def respace(str)
  str.tr SPACE_MARK, ' '
end