skipjack 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45212391c78ee847aa3758aa06f9d078b42f3140
4
- data.tar.gz: ffc8357f6c1a97aae7759fcd8b5ad58c414837a1
3
+ metadata.gz: 3cb9abf2582ba7c6272ee0a2e7e4e68fa1adfb66
4
+ data.tar.gz: 7d2a1174d871fdd42b32eaf8919f3b920686e118
5
5
  SHA512:
6
- metadata.gz: 07948252ead2a70c6cfdbe867979bd5086cb45b7d45e4d04680fce514734b022c7c4375e9675e3a926f58382eb743a433ed9cfdd4edb3a8f18ac66f9a3bc63ce
7
- data.tar.gz: 460953a17949cf4ed9796ece4c4fbcaef058ac2e83d859d6089f7c0a4d35e47dd705a48db364ec0e57c59c8546ec2a97f7bf707d9ff0668ab153c8e3ee36f2a7
6
+ metadata.gz: 4ab0948f509da6eb6e54266e31292e9855ed0d51ae98eb2a1864ceb063dd2d1b36b32fffdbe88c268b4d3b498362c275011734881567e5573f67fcbadede3eeb
7
+ data.tar.gz: 42a53aa73621cbe99a18135430411030106907f61a311bdc6bee7de3ff4c9807c69940c204b5975a75b88c4c9ab8b95fd0067ad3fe0a3d904f801add96e33987
data/.travis.yml CHANGED
@@ -1,5 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.1.5
5
-
3
+ - 2.3.1
data/Guardfile CHANGED
@@ -1,6 +1,6 @@
1
1
  guard :rspec, cmd: "bundle exec rspec" do
2
2
  require "guard/rspec/dsl"
3
- watch(%r{^spec/.+_spec\.rb$})
3
+ #watch(%r{^spec/.+_spec\.rb$})
4
4
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
5
  watch('spec/spec_helper.rb') { "spec" }
6
6
  watch(%r{^spec/.*\.rb}) { "spec" }
@@ -1,10 +1,12 @@
1
1
  module Skipjack
2
2
  class FSharpCompiler
3
3
  attr_reader :target
4
- attr_writer :references
4
+ attr_writer :references, :local_refs
5
+ attr_accessor :resident
5
6
 
6
7
  def initialize *args
7
8
  @args = *args
9
+ self.resident = true #default value
8
10
  yield self if block_given?
9
11
  end
10
12
 
@@ -25,6 +27,15 @@ module Skipjack
25
27
  @references ||= []
26
28
  end
27
29
 
30
+ def local_refs
31
+ @local_refs ||= []
32
+ end
33
+
34
+ def add_reference(ref, copy_local: false)
35
+ references << ref
36
+ local_refs << ref if copy_local
37
+ end
38
+
28
39
  def create_file_task *args
29
40
  dependencies = source_files
30
41
  file_task = Rake::FileTask::define_task *args do |t|
@@ -34,18 +45,36 @@ module Skipjack
34
45
  compiler = "fsharpc"
35
46
  end
36
47
 
37
- out = "--out:#{t.name}"
38
- src = source_files.join(" ")
39
- refs = references.each {|r| r.prepend("--reference:") }
40
- refs = refs.join(" ")
41
- cmd = "#{compiler} #{refs} #{out} --target:#{target.to_s} #{src}"
48
+ opts = []
49
+ opts << "--out:#{t.name}"
50
+ opts << "--target:#{target.to_s}"
51
+ references.each { |r| opts << "--reference:#{r}" }
52
+ if resident
53
+ opts << "--resident"
54
+ end
55
+
56
+ dir = File.dirname(t.name)
57
+
58
+ cmd = "#{compiler} #{opts.join(" ")} #{source_files.join(" ")}"
42
59
  raise "Error executing command" unless Kernel.system cmd
43
60
  end
44
61
  file_task.enhance dependencies
45
62
  end
46
63
 
64
+ def add_reference_dependencies(task)
65
+ local_refs.each do |r|
66
+ dest = File.join(File.dirname(task.name), File.basename(r))
67
+ reference_task = Rake::FileTask::define_task dest => [r] do |t|
68
+ FileUtils.cp(t.prerequisites[0], t.name)
69
+ end
70
+ task.enhance [reference_task] unless dest == r
71
+ end
72
+ end
73
+
47
74
  def create_task
48
- create_file_task *@args
75
+ task = create_file_task *@args
76
+ add_reference_dependencies(task)
77
+ task
49
78
  end
50
79
  end
51
80
  end
@@ -1,3 +1,3 @@
1
1
  module Skipjack
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.6"
3
3
  end
data/skipjack.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rspec", "~> 3.1"
21
+ spec.add_development_dependency "bundler"
22
+ spec.add_development_dependency "rspec"
23
23
  spec.add_development_dependency "guard"
24
24
  spec.add_development_dependency "guard-rspec"
25
25
  spec.add_development_dependency "fakefs"
data/spec/helpers.rb CHANGED
@@ -28,6 +28,7 @@ module Helpers
28
28
 
29
29
  class CompilerOptions
30
30
  attr_accessor :executable, :target, :out
31
+ attr_accessor :resident
31
32
  attr_writer :source_files
32
33
  attr_writer :references
33
34
 
@@ -50,6 +51,7 @@ module Helpers
50
51
  args.shift
51
52
 
52
53
  CompilerOptions.new do |c|
54
+ c.resident = false
53
55
  c.executable = executable
54
56
  /--target:(\w*)/.match(cmd) do |m|
55
57
  c.target = m[1]
@@ -59,6 +61,10 @@ module Helpers
59
61
  c.out = m[1]
60
62
  end
61
63
 
64
+ %r{--resident}.match(cmd) do
65
+ c.resident = true
66
+ end
67
+
62
68
  cmd.scan(/--reference:([^ ]*)/) do |m|
63
69
  c.references << m[0]
64
70
  end
@@ -60,6 +60,30 @@ describe 'fsharp' do
60
60
  it { should eq ["ref1.dll", "ref2.dll"] }
61
61
  end
62
62
 
63
+ describe "--resident" do
64
+ before do |ex|
65
+ @setup = lambda do |t|
66
+ t.resident = ex.metadata[:resident] unless ex.metadata[:resident].nil?
67
+ end
68
+ end
69
+
70
+ subject { options.resident }
71
+
72
+ context "resident is not set" do
73
+ it "defaults to true" do
74
+ expect(subject).to eq true
75
+ end
76
+ end
77
+
78
+ context "resident set to true", resident: true do
79
+ it { should eq true }
80
+ end
81
+
82
+ context "resident set to false", resident: false do
83
+ it { should eq false }
84
+ end
85
+ end
86
+
63
87
  describe "--target: argument" do
64
88
  before do |ex|
65
89
  @setup = lambda do |t|
@@ -102,7 +126,7 @@ describe 'fsharp' do
102
126
 
103
127
  describe "build optimization" do
104
128
  context "build output is older than source files" do
105
- it "calls the compiler", :focus => true do
129
+ it "calls the compiler" do
106
130
  FileUtils.touch('./p.exe')
107
131
  FileUtils.touch('s.fs')
108
132
  task = fsc "p.exe" do |t|
@@ -113,8 +137,9 @@ describe 'fsharp' do
113
137
  expect(@opts).to_not be_nil
114
138
  end
115
139
  end
140
+
116
141
  context "build output is newer than source files" do
117
- it "does not call the compiler", :focus => true do
142
+ it "does not call the compiler" do
118
143
  FileUtils.touch('s.fs')
119
144
  FileUtils.touch('./p.exe')
120
145
  task = fsc "p.exe" do |t|
@@ -125,6 +150,40 @@ describe 'fsharp' do
125
150
  expect(@opts).to be_nil
126
151
  end
127
152
  end
153
+
154
+ it "does not copy the source file to the destination folder by default" do
155
+ FileUtils.mkdir('input', 'output')
156
+ FileUtils.touch('input/x.dll')
157
+ task = fsc "output/p.exe" do |t|
158
+ t.target = :exe
159
+ t.add_reference 'input/x.dll'
160
+ end
161
+ task.invoke
162
+ expect(File.file?('output/x.dll')).to be false
163
+ end
164
+
165
+ it "copies the source file to the destination folder" do
166
+ FileUtils.mkdir('input', 'output')
167
+ FileUtils.touch('input/x.dll')
168
+ task = fsc "output/p.exe" do |t|
169
+ t.target = :exe
170
+ t.add_reference 'input/x.dll', copy_local: true
171
+ end
172
+ task.invoke
173
+ expect(File.file?('output/x.dll')).to be true
174
+ end
175
+
176
+ it "doesnt copy if copy_local is false" do
177
+ FileUtils.mkdir('output')
178
+ FileUtils.touch('output/x.dll')
179
+ task = fsc "output/p.exe" do |t|
180
+ t.target = :exe
181
+ t.add_reference 'input/x.dll', copy_local: false
182
+ end
183
+ task.invoke
184
+ op = lambda { task.invoke }
185
+ expect(op).to_not raise_error
186
+ end
128
187
  end
129
188
  end
130
189
 
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # require 'pp' early, because it gets implicitly required later, and it
2
+ # messes with FakeFS if FakeFS is not required last.
3
+ require 'pp'
1
4
  require 'skipjack'
2
5
  require 'rake'
3
6
  require_relative 'helpers'
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skipjack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Strøiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-06 00:00:00.000000000 Z
11
+ date: 2016-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.1'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '3.1'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakefs
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: A collection of Rake commands for compiling .NET code wihtout dependency
@@ -102,9 +102,9 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - .gitignore
106
- - .rspec
107
- - .travis.yml
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".travis.yml"
108
108
  - CHANGELOG
109
109
  - Gemfile
110
110
  - Guardfile
@@ -129,17 +129,17 @@ require_paths:
129
129
  - lib
130
130
  required_ruby_version: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
141
  rubyforge_project:
142
- rubygems_version: 2.0.6
142
+ rubygems_version: 2.5.1
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Build .NET code with Rake