albacore 2.0.0.rc.12 → 2.0.0.rc.13

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -170,7 +170,7 @@ end
170
170
 
171
171
  ### Docs: nugets_pack
172
172
 
173
- ```
173
+ ``` ruby
174
174
  nugets_pack :create_nugets do |p|
175
175
  p.files = FileList['src/**/*.{csproj,fsproj,nuspec}'].
176
176
  exclude(/Tests/)
@@ -195,10 +195,11 @@ Cancel following of references between projects that cause nugets_pack to find a
195
195
 
196
196
  Enables nuget restore throughout the solution.
197
197
 
198
- ```
198
+ ``` ruby
199
199
  nugets_restore :restore do |p|
200
- p.out = 'src/packages'
201
- p.exe = 'buildsupport/NuGet.exe'
200
+ p.out = 'src/packages' # required
201
+ p.exe = 'buildsupport/NuGet.exe' # required
202
+ p.list_spec = '**/packages.config' # optional
202
203
  end
203
204
  ```
204
205
 
@@ -219,9 +220,36 @@ asmver :asmver do |a|
219
220
  end
220
221
  ```
221
222
 
222
- ### Docs: test_runner
223
+ ### Docs: asmver_files
223
224
 
224
225
  ```
226
+ desc 'create assembly infos'
227
+ asmver_files :assembly_info do |a|
228
+ a.files = FileList['**/*proj'] # optional, will find all projects recursively by default
229
+
230
+ # attributes are required:
231
+ a.attributes assembly_description: "My wonderful lib",
232
+ assembly_configuration: 'RELEASE',
233
+ assembly_company: 'Wonders Inc.',
234
+ assembly_copyright: "(c) #{Time.now.year} by John Doe",
235
+ assembly_version: ENV['LONG_VERSION'],
236
+ assembly_file_version: ENV['LONG_VERSION'],
237
+ assembly_informational_version: ENV['BUILD_VERSION']
238
+
239
+ # optional, not widely supported yet, as there's no way to read the attributes
240
+ # file an issue if you have a use-case
241
+ a.handle_config do |proj, conf|
242
+ # do something with configuration
243
+ # conf.attributes ...
244
+ end
245
+ end
246
+ ```
247
+
248
+
249
+
250
+ ### Docs: test_runner
251
+
252
+ ``` ruby
225
253
  test_runner :tests do |tests|
226
254
  tests.files = FileList['**/*.Tests/bin/Release/*.Tests.dll'] # dll files with test
227
255
  tests.exe = 'src/packages/NUnit.Runners.2.5.3/tools/nunit-console.exe' # executable to run tests with
@@ -317,7 +345,7 @@ in the archive, rather just its contents.
317
345
 
318
346
  Usage:
319
347
 
320
- ```
348
+ ``` ruby
321
349
  dir_to_zip = "/tmp/input"
322
350
  out_file = "/tmp/out.zip"
323
351
  zf = Zippy.new dir_to_zip, out_file
@@ -326,7 +354,7 @@ zf.write
326
354
 
327
355
  Or:
328
356
 
329
- ```
357
+ ``` ruby
330
358
  z = Zippy.new(directory_to_zip, output_file) { |f| f.include? 'html' }
331
359
  z.write
332
360
  ```
@@ -19,6 +19,18 @@ module Albacore
19
19
  end
20
20
  end
21
21
 
22
+ def asmver_files *args, &block
23
+ Albacore.define_task *args do
24
+ c = Albacore::Asmver::MultipleFilesConfig.new
25
+ yield c
26
+
27
+ c.configurations.each do |conf|
28
+ trace { "generating asmver for #{conf}" }
29
+ Albacore::Asmver::Task.new(conf.opts).execute
30
+ end
31
+ end
32
+ end
33
+
22
34
  # a task for building sln or proj files - or just invoking something
23
35
  # with MsBuild
24
36
  def build *args, &block
@@ -1,79 +1,120 @@
1
- require 'set'
2
- require 'albacore/logging'
3
- require 'albacore/cross_platform_cmd'
4
- require 'albacore/cmd_config'
5
- require 'albacore/errors/unfilled_property_error'
6
- require 'albacore/task_types/asmver/cs'
7
- require 'albacore/task_types/asmver/vb'
8
- require 'albacore/task_types/asmver/cpp'
9
- require 'albacore/task_types/asmver/fs'
10
- require 'albacore/task_types/asmver/file_generator'
11
-
12
- module Albacore
13
- module Asmver
14
- class Config
15
- include CmdConfig
16
- self.extend ConfigDSL
17
-
18
- # the file name to write the assembly info to
19
- attr_path_accessor :file_path
20
-
21
- # the namespace to output into the version file
22
- attr_writer :namespace
23
-
24
-
25
- # (optional) output stream
26
- attr_writer :out
27
-
28
- def initialize
29
- end
30
-
31
- # the hash of attributes to write to the assembly info file
32
- def attributes attrs
33
- @attributes = attrs
34
- end
35
-
36
- def opts
37
- raise Error, "#file_path is not set" unless (file_path or out)
38
- ns = @namespace || '' # defaults to empty namespace if not set.
39
- lang = lang_for file_path
40
- m = Map.new attributes: @attributes,
41
- namespace: ns,
42
- file_path: @file_path,
43
- language: lang
44
- m[:out] = @out if @out
45
- m
46
- end
47
-
48
- private
49
- def lang_for path
50
- mk = lambda { |lang| "Albacore::Asmver::#{lang}".split('::').inject(Object) { |o, c| o.const_get c }.new }
51
- case File.extname path
52
- when ".fs" then mk.call "Fs"
53
- when ".cs" then mk.call "Cs"
54
- when ".vb" then mk.call "Vb"
55
- when ".cpp" then mk.call "Cpp"
56
- end
57
- end
58
- end
59
- class Task
60
- include Logging
61
- def initialize opts
62
- @opts = opts
63
- end
64
- def execute
65
- lang = @opts.get :language
66
- ns = @opts.get :namespace
67
- attrs = @opts.get :attributes
68
- out = @opts.get :out do
69
- trace { "asmver being written at '#{@opts.get :file_path}' [asmver-task #execute]" }
70
- File.open(@opts.get(:file_path), 'w')
71
- end
72
- ::Albacore::Asmver::FileGenerator.new(lang, ns, @opts).generate out, attrs
73
- trace { "asmver was written at '#{@opts.get :file_path}' [asmver-task #execute]" }
74
- ensure
75
- out.close if out
76
- end
77
- end
78
- end
79
- end
1
+ require 'set'
2
+ require 'albacore/logging'
3
+ require 'albacore/cross_platform_cmd'
4
+ require 'albacore/cmd_config'
5
+ require 'albacore/errors/unfilled_property_error'
6
+ require 'albacore/project'
7
+ require 'albacore/task_types/asmver/cs'
8
+ require 'albacore/task_types/asmver/vb'
9
+ require 'albacore/task_types/asmver/cpp'
10
+ require 'albacore/task_types/asmver/fs'
11
+ require 'albacore/task_types/asmver/file_generator'
12
+
13
+ module Albacore
14
+ module Asmver
15
+ class MultipleFilesConfig
16
+ include ::Albacore::Logging
17
+
18
+ # list of xxproj files to iterate over
19
+ attr_writer :files
20
+
21
+ def attributes attrs
22
+ @attributes = attrs
23
+ end
24
+
25
+ # block should have signature: Project -> AsmVer::Config -> AsmVer::Config
26
+ # because you can use this block to change the configuration generated
27
+ def handle_config &block
28
+ @handle_config = block
29
+ end
30
+
31
+ def configurations
32
+ @files ||= FileList['**/*.{fsproj,csproj,vbproj}']
33
+
34
+ debug { "generating config for files: #{@files}" }
35
+
36
+ @files.map { |proj|
37
+ proj =~ /(\w\w)proj$/
38
+ [ $1, Project.new(proj) ]
39
+ }.map { |ext, proj|
40
+ attrs = @attributes.clone
41
+ attrs[:assembly_title] = proj.name
42
+ file_path = "#{proj.proj_path_base}/AssemblyVersionInfo.#{ext}"
43
+ cfg = Albacore::Asmver::Config.new file_path, proj.asmname, attrs
44
+ cfg = @handle_config.call(proj, cfg) if @handle_config
45
+ cfg
46
+ }
47
+ end
48
+ end
49
+
50
+ class Config
51
+ include CmdConfig
52
+ self.extend ConfigDSL
53
+
54
+ # the file name to write the assembly info to
55
+ attr_path_accessor :file_path
56
+
57
+ # the namespace to output into the version file
58
+ attr_writer :namespace
59
+
60
+ # (optional) output stream
61
+ attr_writer :out
62
+
63
+ # creates a new config with some pre-existing data
64
+ def initialize file_path = nil, namespace = nil, attributes = nil
65
+ @file_path, @namespace, @attributes = file_path, namespace, attributes
66
+ end
67
+
68
+ # the hash of attributes to write to the assembly info file
69
+ def attributes attrs
70
+ @attributes = attrs
71
+ end
72
+
73
+ def opts
74
+ raise Error, "#file_path is not set" unless (file_path or out)
75
+ ns = @namespace || '' # defaults to empty namespace if not set.
76
+ lang = lang_for file_path
77
+ m = Map.new attributes: @attributes,
78
+ namespace: ns,
79
+ file_path: @file_path,
80
+ language: lang
81
+ m[:out] = @out if @out
82
+ m
83
+ end
84
+
85
+ def to_s
86
+ "AsmVer::Config[#{file_path}]"
87
+ end
88
+
89
+ private
90
+ def lang_for path
91
+ mk = lambda { |lang| "Albacore::Asmver::#{lang}".split('::').inject(Object) { |o, c| o.const_get c }.new }
92
+ case File.extname path
93
+ when ".fs" then mk.call "Fs"
94
+ when ".cs" then mk.call "Cs"
95
+ when ".vb" then mk.call "Vb"
96
+ when ".cpp" then mk.call "Cpp"
97
+ end
98
+ end
99
+ end
100
+ class Task
101
+ include Logging
102
+ def initialize opts
103
+ @opts = opts
104
+ end
105
+ def execute
106
+ lang = @opts.get :language
107
+ ns = @opts.get :namespace
108
+ attrs = @opts.get :attributes
109
+ out = @opts.get :out do
110
+ trace { "asmver being written at '#{@opts.get :file_path}' [asmver-task #execute]" }
111
+ File.open(@opts.get(:file_path), 'w')
112
+ end
113
+ ::Albacore::Asmver::FileGenerator.new(lang, ns, @opts).generate out, attrs
114
+ trace { "asmver was written at '#{@opts.get :file_path}' [asmver-task #execute]" }
115
+ ensure
116
+ out.close if out
117
+ end
118
+ end
119
+ end
120
+ end
@@ -1,3 +1,3 @@
1
1
  module Albacore
2
- VERSION = "2.0.0.rc.12"
2
+ VERSION = "2.0.0.rc.13"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: albacore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc.12
4
+ version: 2.0.0.rc.13
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-04-07 00:00:00.000000000 Z
13
+ date: 2014-04-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -317,7 +317,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
317
317
  version: '0'
318
318
  segments:
319
319
  - 0
320
- hash: 238623882763255620
320
+ hash: 799826362560465067
321
321
  required_rubygems_version: !ruby/object:Gem::Requirement
322
322
  none: false
323
323
  requirements: