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 +4 -4
- data/.travis.yml +1 -3
- data/Guardfile +1 -1
- data/lib/skipjack/fsharp.rb +36 -7
- data/lib/skipjack/version.rb +1 -1
- data/skipjack.gemspec +2 -2
- data/spec/helpers.rb +6 -0
- data/spec/lib/skipjack/fsharp_spec.rb +61 -2
- data/spec/spec_helper.rb +3 -0
- metadata +24 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cb9abf2582ba7c6272ee0a2e7e4e68fa1adfb66
|
4
|
+
data.tar.gz: 7d2a1174d871fdd42b32eaf8919f3b920686e118
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ab0948f509da6eb6e54266e31292e9855ed0d51ae98eb2a1864ceb063dd2d1b36b32fffdbe88c268b4d3b498362c275011734881567e5573f67fcbadede3eeb
|
7
|
+
data.tar.gz: 42a53aa73621cbe99a18135430411030106907f61a311bdc6bee7de3ff4c9807c69940c204b5975a75b88c4c9ab8b95fd0067ad3fe0a3d904f801add96e33987
|
data/.travis.yml
CHANGED
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" }
|
data/lib/skipjack/fsharp.rb
CHANGED
@@ -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
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
data/lib/skipjack/version.rb
CHANGED
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"
|
22
|
-
spec.add_development_dependency "rspec"
|
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"
|
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"
|
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
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
|
+
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-
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
142
|
+
rubygems_version: 2.5.1
|
143
143
|
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: Build .NET code with Rake
|