Class: Skipjack::FSharpCompiler
- Inherits:
-
Object
- Object
- Skipjack::FSharpCompiler
- Defined in:
- lib/skipjack/fsharp.rb
Instance Attribute Summary collapse
- #local_refs ⇒ Object
- #references ⇒ Object
-
#resident ⇒ Object
Returns the value of attribute resident.
-
#target ⇒ Object
Returns the value of attribute target.
Instance Method Summary collapse
- #add_reference(ref, copy_local: false) ⇒ Object
- #add_reference_dependencies(task) ⇒ Object
- #create_file_task(*args) ⇒ Object
- #create_task ⇒ Object
-
#initialize(*args) {|_self| ... } ⇒ FSharpCompiler
constructor
A new instance of FSharpCompiler.
- #source_files ⇒ Object
- #source_files=(val) ⇒ Object
Constructor Details
#initialize(*args) {|_self| ... } ⇒ FSharpCompiler
Returns a new instance of FSharpCompiler.
7 8 9 10 11 |
# File 'lib/skipjack/fsharp.rb', line 7 def initialize *args @args = *args self.resident = true #default value yield self if block_given? end |
Instance Attribute Details
#local_refs ⇒ Object
30 31 32 |
# File 'lib/skipjack/fsharp.rb', line 30 def local_refs @local_refs ||= [] end |
#references ⇒ Object
26 27 28 |
# File 'lib/skipjack/fsharp.rb', line 26 def references @references ||= [] end |
#resident ⇒ Object
Returns the value of attribute resident.
5 6 7 |
# File 'lib/skipjack/fsharp.rb', line 5 def resident @resident end |
#target ⇒ Object
Returns the value of attribute target.
3 4 5 |
# File 'lib/skipjack/fsharp.rb', line 3 def target @target end |
Instance Method Details
#add_reference(ref, copy_local: false) ⇒ Object
34 35 36 37 |
# 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) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/skipjack/fsharp.rb', line 64 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) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/skipjack/fsharp.rb', line 39 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 opts = [] opts << "--out:#{t.name}" opts << "--target:#{target.to_s}" references.each { |r| opts << "--reference:#{r}" } if resident opts << "--resident" end dir = File.dirname(t.name) cmd = "#{compiler} #{opts.join(" ")} #{source_files.join(" ")}" raise "Error executing command" unless Kernel.system cmd end file_task.enhance dependencies end |
#create_task ⇒ Object
74 75 76 77 78 |
# File 'lib/skipjack/fsharp.rb', line 74 def create_task task = create_file_task *@args add_reference_dependencies(task) task end |
#source_files ⇒ Object
22 23 24 |
# File 'lib/skipjack/fsharp.rb', line 22 def source_files @source_files ||= [] end |
#source_files=(val) ⇒ Object
18 19 20 |
# File 'lib/skipjack/fsharp.rb', line 18 def source_files=(val) @source_files = val end |