class FFI::Compiler::ExportTask

Public Class Methods

new(rb_dir, out_dir, options = {}) { |self| ... } click to toggle source
# File lib/ffi-compiler/export_task.rb, line 9
def initialize(rb_dir, out_dir, options = {})
  @rb_dir = rb_dir
  @out_dir = out_dir
  @gem_spec = options[:gem_spec]
  @exports = []
  
  if block_given?
    yield self
    define_tasks!
  end
end

Public Instance Methods

export(rb_file) click to toggle source
# File lib/ffi-compiler/export_task.rb, line 21
def export(rb_file)
  @exports << { :rb_file => File.join(@rb_dir, rb_file), :header => File.join(@out_dir, File.basename(rb_file).sub(/\.rb$/, '.h')) }
end
export_all() click to toggle source
# File lib/ffi-compiler/export_task.rb, line 25
def export_all
  Dir["#@rb_dir/**/*rb"].each do |rb_file|
    @exports << { :rb_file => rb_file, :header => File.join(@out_dir, File.basename(rb_file).sub(/\.rb$/, '.h')) }
  end
end

Private Instance Methods

define_tasks!() click to toggle source
# File lib/ffi-compiler/export_task.rb, line 32
def define_tasks!
  @exports.each do |e|
    file e[:header] => [ e[:rb_file] ] do |t|
      ruby "-I#{File.join(File.dirname(__FILE__), 'fake_ffi')} #{File.join(File.dirname(__FILE__), 'exporter.rb')} #{t.prerequisites[0]} #{t.name}"
    end
    CLEAN.include(e[:header])

    desc "Export API headers"
    task :api_headers => [ e[:header] ]
    @gem_spec.files << e[:header] unless @gem_spec.nil?
  end

  task :gem => [ :api_headers ] unless @gem_spec.nil?
end