class Skipjack::FSharpCompiler
Attributes
local_refs[W]
references[W]
resident[RW]
target[R]
Public Class Methods
new(*args) { |self| ... }
click to toggle source
# File lib/skipjack/fsharp.rb, line 7 def initialize *args @args = *args self.resident = true #default value yield self if block_given? end
Public Instance Methods
add_argument(arg)
click to toggle source
# File lib/skipjack/fsharp.rb, line 39 def add_argument arg @added_arguments ||= [] @added_arguments << arg end
add_reference(ref, copy_local: false)
click to toggle source
# File lib/skipjack/fsharp.rb, line 34 def add_reference(ref, copy_local: false) references << ref local_refs << ref if copy_local end
add_reference_dependencies(task)
click to toggle source
# File lib/skipjack/fsharp.rb, line 78 def add_reference_dependencies(task) local_refs.each do |r| dest = File.join(File.dirname(task.name), File.basename(r)) reference_task = Rake::FileTask::define_task dest => [r] do |t| FileUtils.cp(t.prerequisites[0], t.name) end task.enhance [reference_task] unless dest == r end end
create_file_task(*args)
click to toggle source
# File lib/skipjack/fsharp.rb, line 44 def create_file_task *args dependencies = source_files file_task = Rake::FileTask::define_task *args do |t| if t.application.windows? compiler = "fsc" else compiler = "fsharpc" end target = self.target case File.extname(t.name) when ".exe" target = :exe when ".dll" target = :library end unless target opts = [] opts << "--out:#{t.name}" opts << "--target:#{target.to_s}" @added_arguments.each { |a| opts << a } if @added_arguments references.each { |r| opts << "--reference:#{r}" } if resident opts << "--resident" end dir = File.dirname(t.name) cmd = "#{compiler} #{opts.join(" ")} #{source_files.join(" ")}" puts cmd raise "Error executing command" unless Kernel.system cmd end file_task.enhance dependencies end
create_task()
click to toggle source
# File lib/skipjack/fsharp.rb, line 88 def create_task task = create_file_task *@args add_reference_dependencies(task) task end
local_refs()
click to toggle source
# File lib/skipjack/fsharp.rb, line 30 def local_refs @local_refs ||= [] end
references()
click to toggle source
# File lib/skipjack/fsharp.rb, line 26 def references @references ||= [] end
source_files()
click to toggle source
# File lib/skipjack/fsharp.rb, line 22 def source_files @source_files ||= [] end
source_files=(val)
click to toggle source
# File lib/skipjack/fsharp.rb, line 18 def source_files=(val) @source_files = val end
target=(val)
click to toggle source
# File lib/skipjack/fsharp.rb, line 13 def target=(val) raise "Invalid target: #{val}" unless %w(exe winexe library module).include? val.to_s @target = val end