albacore 2.3.10 → 2.3.11
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/lib/albacore/project.rb +5 -0
- data/lib/albacore/task_types/asmver.rb +28 -4
- data/lib/albacore/task_types/asmver/file_generator.rb +2 -2
- data/lib/albacore/version.rb +1 -1
- data/spec/asmver_spec.rb +81 -13
- data/spec/project_spec.rb +10 -7
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5477545e0039f685becc960210d322ca80f7533
|
4
|
+
data.tar.gz: b84c0d215e55a4186da09026a78864c2c3ced25a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2a7b9b32e5e1c3dfe12fc624245e325871b26f5d0231387db4d08d97651bb1c64a0875409555dcff861950553ce8492d206064fcd2e6e650a8fd87776ca1275
|
7
|
+
data.tar.gz: a80530c23639b263f1a5ec5e0257e12492305bd6d55275439a2cb4668d350fe1bef058707ec1b6bd48a46cc0d6f759b578aaad80ccbacf68a9d2d815adad5409
|
data/lib/albacore/project.rb
CHANGED
@@ -18,10 +18,19 @@ module Albacore
|
|
18
18
|
# list of xxproj files to iterate over
|
19
19
|
attr_writer :files
|
20
20
|
|
21
|
+
def initialize
|
22
|
+
@usings = []
|
23
|
+
end
|
24
|
+
|
21
25
|
def attributes attrs
|
22
26
|
@attributes = attrs
|
23
27
|
end
|
24
28
|
|
29
|
+
def using ns
|
30
|
+
debug { "adding namespace #{ns} [Asmver::MultipleFilesConfig using]" }
|
31
|
+
@usings << ns
|
32
|
+
end
|
33
|
+
|
25
34
|
# block should have signature: Project -> AsmVer::Config -> AsmVer::Config
|
26
35
|
# because you can use this block to change the configuration generated
|
27
36
|
def handle_config &block
|
@@ -42,11 +51,16 @@ module Albacore
|
|
42
51
|
file_path = "#{proj.proj_path_base}/AssemblyVersionInfo.#{ext}"
|
43
52
|
cfg = Albacore::Asmver::Config.new file_path, proj.asmname, attrs
|
44
53
|
cfg = @handle_config.call(proj, cfg) if @handle_config
|
54
|
+
cfg.usings = @usings.clone
|
45
55
|
cfg
|
46
56
|
}
|
47
57
|
end
|
48
58
|
end
|
49
59
|
|
60
|
+
# Raised when the configuration is missing where to write the file.
|
61
|
+
class MissingOutputError < StandardError
|
62
|
+
end
|
63
|
+
|
50
64
|
class Config
|
51
65
|
include CmdConfig
|
52
66
|
self.extend ConfigDSL
|
@@ -58,11 +72,15 @@ module Albacore
|
|
58
72
|
attr_accessor :namespace
|
59
73
|
|
60
74
|
# (optional) output stream
|
61
|
-
|
75
|
+
attr_accessor :out
|
76
|
+
|
77
|
+
# the array-like thing of using namespaces
|
78
|
+
attr_accessor :usings
|
62
79
|
|
63
80
|
# creates a new config with some pre-existing data
|
64
81
|
def initialize file_path = nil, namespace = nil, attributes = nil
|
65
82
|
@file_path, @namespace, @attributes = file_path, namespace, attributes
|
83
|
+
@usings = []
|
66
84
|
end
|
67
85
|
|
68
86
|
# Call with to get the opportunity to change the attributes hash
|
@@ -75,15 +93,21 @@ module Albacore
|
|
75
93
|
@attributes = attrs
|
76
94
|
end
|
77
95
|
|
96
|
+
def using ns
|
97
|
+
debug { "adding namespace #{ns} [Asmver::Config using]" }
|
98
|
+
usings << ns
|
99
|
+
end
|
100
|
+
|
78
101
|
def opts
|
79
|
-
raise
|
102
|
+
raise MissingOutputError, "#file_path or #out is not set" unless (file_path or out)
|
80
103
|
ns = @namespace || '' # defaults to empty namespace if not set.
|
81
104
|
lang = lang_for file_path
|
82
105
|
m = Map.new attributes: @attributes,
|
83
106
|
namespace: ns,
|
84
107
|
file_path: @file_path,
|
85
|
-
language: lang
|
86
|
-
|
108
|
+
language: lang,
|
109
|
+
usings: usings
|
110
|
+
m[:out] = out if out
|
87
111
|
m
|
88
112
|
end
|
89
113
|
|
@@ -30,8 +30,8 @@ System.Runtime.InteropServices|
|
|
30
30
|
# after namespace My.Ns.Here
|
31
31
|
out << "\n"
|
32
32
|
|
33
|
-
# open all namespaces to use .Net attributes
|
34
|
-
@opts.get(:usings)
|
33
|
+
# open all namespaces to use .Net attributes, concat with your custom attrs
|
34
|
+
[ DEFAULT_USINGS, (@opts.get(:usings) || [])].flatten.each do |ns|
|
35
35
|
out << @engine.build_using_statement(ns)
|
36
36
|
out << "\n"
|
37
37
|
end
|
data/lib/albacore/version.rb
CHANGED
data/spec/asmver_spec.rb
CHANGED
@@ -1,8 +1,36 @@
|
|
1
|
+
require 'albacore/task_types/asmver'
|
1
2
|
require 'albacore/task_types/asmver/engine'
|
2
3
|
require 'albacore/task_types/asmver/file_generator'
|
3
4
|
|
4
5
|
include Albacore::Asmver
|
5
6
|
|
7
|
+
describe Albacore::Asmver::Config, 'when misconfigured' do
|
8
|
+
subject do
|
9
|
+
Albacore::Asmver::Config.new
|
10
|
+
end
|
11
|
+
it 'should throw MissingOutputError by default' do
|
12
|
+
expect(lambda { subject.opts }).to raise_error MissingOutputError
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Albacore::Asmver::Config do
|
17
|
+
subject do
|
18
|
+
Albacore::Asmver::Config.new 'A.fs'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have a namespace that\' RW' do
|
22
|
+
subject.namespace = 'smirk'
|
23
|
+
subject.namespace = subject.namespace + 'smirk'
|
24
|
+
expect(subject.namespace).to eq 'smirksmirk'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'can add a #using' do
|
28
|
+
subject.out = StringIO.new
|
29
|
+
subject.using 'System'
|
30
|
+
expect(subject.opts.get(:usings)).to include('System')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
6
34
|
%w|Fs Vb Cpp Cs|.each do |lang|
|
7
35
|
require "albacore/task_types/asmver/#{lang.downcase}"
|
8
36
|
|
@@ -152,42 +180,82 @@ describe FileGenerator, 'when generating F# file' do
|
|
152
180
|
let :generated do
|
153
181
|
@out.string
|
154
182
|
end
|
183
|
+
|
155
184
|
it 'should include namespace' do
|
156
|
-
generated.
|
185
|
+
expect(generated).to match /namespace My\.Fs\.Ns(\r\n?|\n)/
|
157
186
|
end
|
187
|
+
|
158
188
|
it 'should open System.Reflection' do
|
159
|
-
generated.
|
189
|
+
expect(generated).to match /open System\.Reflection/
|
160
190
|
end
|
191
|
+
|
161
192
|
it 'should open System.Runtime.CompilerServices' do
|
162
|
-
generated.
|
193
|
+
expect(generated).to match /open System\.Runtime\.CompilerServices/
|
163
194
|
end
|
195
|
+
|
164
196
|
it 'should open System.Runtime.InteropServices' do
|
165
|
-
generated.
|
197
|
+
expect(generated).to match /open System\.Runtime\.InteropServices/
|
166
198
|
end
|
199
|
+
|
167
200
|
it 'should generate the ComVisible attribute' do
|
168
|
-
generated.
|
201
|
+
expect(generated).to include('[<assembly: ComVisible(false)>]')
|
169
202
|
end
|
203
|
+
|
170
204
|
it 'should generate the AssemblyTitle attribute' do
|
171
|
-
generated.
|
205
|
+
expect(generated).to include('[<assembly: AssemblyTitle("My.Ns")>]')
|
172
206
|
end
|
207
|
+
|
173
208
|
it 'should generate the AssemblyVersion attribute' do
|
174
|
-
generated.
|
209
|
+
expect(generated).to include('[<assembly: AssemblyVersion("0.1.2")>]')
|
175
210
|
end
|
211
|
+
|
176
212
|
it 'should generate the CustomThing attribute' do
|
177
|
-
generated.
|
213
|
+
expect(generated).to include('[<assembly: CustomThing("a", "b", "c")>]')
|
178
214
|
end
|
215
|
+
|
179
216
|
it 'should generate the NamedThing attribute' do
|
180
|
-
generated.
|
217
|
+
expect(generated).to include('[<assembly: NamedThing(b = 3, c = "hi")>]')
|
181
218
|
end
|
219
|
+
|
182
220
|
it 'should generate the CLSCompliant attribute' do
|
183
|
-
generated.
|
221
|
+
expect(generated).to include('[<assembly: CLSCompliant(true)>]')
|
184
222
|
end
|
223
|
+
|
185
224
|
it 'should end with ()\n' do
|
186
|
-
generated.
|
225
|
+
expect(generated).to match /\(\)(\r\n?|\n)$/m
|
187
226
|
end
|
188
227
|
end
|
189
228
|
|
190
|
-
describe FileGenerator do
|
229
|
+
describe FileGenerator, 'when given extra "usings"' do
|
230
|
+
before :all do
|
231
|
+
@out = StringIO.new
|
232
|
+
subject = FileGenerator.new Fs.new, '', usings: ['System']
|
233
|
+
subject.generate @out, assembly_title: 'My.Asm'
|
234
|
+
end
|
235
|
+
|
236
|
+
let :generated do
|
237
|
+
@out.string
|
238
|
+
end
|
239
|
+
|
240
|
+
it 'should open System' do
|
241
|
+
expect(generated).to match /open System/
|
242
|
+
end
|
243
|
+
|
244
|
+
it 'should open System.Reflection' do
|
245
|
+
expect(generated).to match /open System\.Reflection/
|
246
|
+
end
|
247
|
+
|
248
|
+
it 'should open System.Runtime.CompilerServices' do
|
249
|
+
expect(generated).to match /open System\.Runtime\.CompilerServices/
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'should open System.Runtime.InteropServices' do
|
253
|
+
expect(generated).to match /open System\.Runtime\.InteropServices/
|
254
|
+
end
|
255
|
+
|
256
|
+
end
|
257
|
+
|
258
|
+
describe FileGenerator, 'when it should generate NO NAMESPACE' do
|
191
259
|
before :all do
|
192
260
|
@out = StringIO.new
|
193
261
|
subject = FileGenerator.new(Cs.new, '', {})
|
@@ -202,6 +270,6 @@ describe FileGenerator do
|
|
202
270
|
@out.string
|
203
271
|
end
|
204
272
|
it 'should not include \'namespace\'' do
|
205
|
-
generated.
|
273
|
+
expect(generated).to_not include('namespace')
|
206
274
|
end
|
207
275
|
end
|
data/spec/project_spec.rb
CHANGED
@@ -70,25 +70,28 @@ describe Albacore::Project, "when reading project file" do
|
|
70
70
|
|
71
71
|
describe 'public API' do
|
72
72
|
it do
|
73
|
-
subject.
|
73
|
+
expect(subject).to respond_to :name
|
74
74
|
end
|
75
75
|
it do
|
76
|
-
subject.
|
76
|
+
expect(subject).to respond_to :asmname
|
77
77
|
end
|
78
78
|
it do
|
79
|
-
subject.
|
79
|
+
expect(subject).to respond_to :namespace
|
80
80
|
end
|
81
81
|
it do
|
82
|
-
subject.
|
82
|
+
expect(subject).to respond_to :version
|
83
|
+
end
|
84
|
+
it do
|
85
|
+
expect(subject).to respond_to :authors
|
83
86
|
end
|
84
87
|
it 'should have five referenced assemblies' do
|
85
|
-
subject.find_refs.length.
|
88
|
+
expect(subject.find_refs.length).to eq 5
|
86
89
|
end
|
87
90
|
it 'knows about referenced packages' do
|
88
|
-
subject.
|
91
|
+
expect(subject).to respond_to :declared_packages
|
89
92
|
end
|
90
93
|
it 'knows about referenced projects' do
|
91
|
-
subject.
|
94
|
+
expect(subject).to respond_to :declared_projects
|
92
95
|
end
|
93
96
|
it 'should have three referenced packages' do
|
94
97
|
expected = %w|Intelliplan.Util Newtonsoft.Json NLog|
|