rake-funnel 0.3.2.pre → 0.4.0.pre

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.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -2
  3. data/Gemfile +4 -0
  4. data/README.md +2 -2
  5. data/lib/rake/funnel/ambiguous_file_error.rb +31 -29
  6. data/lib/rake/funnel/execution_error.rb +28 -26
  7. data/lib/rake/funnel/extensions/case/camel_case.rb +24 -19
  8. data/lib/rake/funnel/extensions/case/pascal_case.rb +24 -19
  9. data/lib/rake/funnel/extensions/case.rb +3 -3
  10. data/lib/rake/funnel/extensions/common_path.rb +60 -52
  11. data/lib/rake/funnel/extensions/disable_colors.rb +33 -27
  12. data/lib/rake/funnel/extensions/rexml.rb +27 -23
  13. data/lib/rake/funnel/extensions/shell.rb +92 -56
  14. data/lib/rake/funnel/extensions/windows_path.rb +15 -11
  15. data/lib/rake/funnel/framework.rb +11 -16
  16. data/lib/rake/funnel/integration/progress_report.rb +72 -70
  17. data/lib/rake/funnel/integration/sync_output.rb +12 -8
  18. data/lib/rake/funnel/integration/teamcity/nunit_plugin.rb +61 -55
  19. data/lib/rake/funnel/integration/teamcity/progress_report.rb +39 -33
  20. data/lib/rake/funnel/integration/teamcity/service_messages.rb +46 -40
  21. data/lib/rake/funnel/integration/teamcity/teamcity.rb +19 -15
  22. data/lib/rake/funnel/integration/teamcity.rb +3 -5
  23. data/lib/rake/funnel/support/argument_mapper/key_value_pair.rb +16 -10
  24. data/lib/rake/funnel/support/argument_mapper/styles/default.rb +39 -31
  25. data/lib/rake/funnel/support/argument_mapper/styles/msbuild.rb +41 -33
  26. data/lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb +55 -47
  27. data/lib/rake/funnel/support/argument_mapper/styles/nunit.rb +41 -33
  28. data/lib/rake/funnel/support/argument_mapper/styles.rb +3 -5
  29. data/lib/rake/funnel/support/argument_mapper/switch.rb +16 -10
  30. data/lib/rake/funnel/support/argument_mapper/value.rb +16 -10
  31. data/lib/rake/funnel/support/assembly_version/from_version_files.rb +39 -35
  32. data/lib/rake/funnel/support/assembly_version/languages/cs +5 -5
  33. data/lib/rake/funnel/support/assembly_version/languages/fs +12 -12
  34. data/lib/rake/funnel/support/assembly_version/languages/vb +5 -5
  35. data/lib/rake/funnel/support/assembly_version_writer.rb +56 -52
  36. data/lib/rake/funnel/support/binary_version_reader.rb +37 -32
  37. data/lib/rake/funnel/support/copier.rb +31 -27
  38. data/lib/rake/funnel/support/environments/loader.rb +46 -40
  39. data/lib/rake/funnel/support/environments.rb +3 -3
  40. data/lib/rake/funnel/support/internal/finder.rb +55 -51
  41. data/lib/rake/funnel/support/internal/instantiate_symbol.rb +38 -34
  42. data/lib/rake/funnel/support/mapper.rb +57 -53
  43. data/lib/rake/funnel/support/mono.rb +21 -17
  44. data/lib/rake/funnel/support/msbuild/build_tool.rb +30 -24
  45. data/lib/rake/funnel/support/msbuild.rb +3 -3
  46. data/lib/rake/funnel/support/msdeploy/registry_patch.rb +90 -84
  47. data/lib/rake/funnel/support/msdeploy.rb +3 -3
  48. data/lib/rake/funnel/support/patch.rb +41 -37
  49. data/lib/rake/funnel/support/specs_remover.rb +66 -62
  50. data/lib/rake/funnel/support/template_engine.rb +30 -26
  51. data/lib/rake/funnel/support/timing/report.rb +95 -89
  52. data/lib/rake/funnel/support/timing/statistics.rb +32 -26
  53. data/lib/rake/funnel/support/timing.rb +3 -3
  54. data/lib/rake/funnel/support/version_info.rb +103 -72
  55. data/lib/rake/funnel/support/which.rb +19 -15
  56. data/lib/rake/funnel/support/zipper.rb +53 -49
  57. data/lib/rake/funnel/tasks/assembly_version.rb +44 -40
  58. data/lib/rake/funnel/tasks/bin_path.rb +45 -41
  59. data/lib/rake/funnel/tasks/copy.rb +43 -39
  60. data/lib/rake/funnel/tasks/environments.rb +89 -89
  61. data/lib/rake/funnel/tasks/msbuild.rb +55 -51
  62. data/lib/rake/funnel/tasks/msdeploy.rb +54 -50
  63. data/lib/rake/funnel/tasks/nunit.rb +52 -48
  64. data/lib/rake/funnel/tasks/paket.rb +51 -47
  65. data/lib/rake/funnel/tasks/quick_template.rb +53 -49
  66. data/lib/rake/funnel/tasks/side_by_side_specs.rb +41 -37
  67. data/lib/rake/funnel/tasks/timing.rb +108 -104
  68. data/lib/rake/funnel/tasks/zip.rb +46 -42
  69. data/lib/rake/funnel/version.rb +1 -1
  70. data/lib/rake/funnel.rb +7 -7
  71. data/rake-funnel.gemspec +12 -3
  72. data/spec/rake/funnel/execution_error_spec.rb +67 -67
  73. data/spec/rake/funnel/extensions/case/camel_case_spec.rb +17 -17
  74. data/spec/rake/funnel/extensions/case/pascal_case_spec.rb +17 -17
  75. data/spec/rake/funnel/extensions/common_path_spec.rb +56 -56
  76. data/spec/rake/funnel/extensions/disable_colors_spec.rb +33 -33
  77. data/spec/rake/funnel/extensions/rexml_spec.rb +20 -20
  78. data/spec/rake/funnel/extensions/shell_spec.rb +237 -237
  79. data/spec/rake/funnel/extensions/windows_path_spec.rb +5 -5
  80. data/spec/rake/funnel/integration/progress_report_spec.rb +149 -149
  81. data/spec/rake/funnel/integration/sync_output_spec.rb +16 -16
  82. data/spec/rake/funnel/integration/teamcity/nunit_plugin_spec.rb +110 -110
  83. data/spec/rake/funnel/integration/teamcity/progress_report_spec.rb +174 -174
  84. data/spec/rake/funnel/integration/teamcity/service_messages_spec.rb +136 -136
  85. data/spec/rake/funnel/integration/teamcity/teamcity_spec.rb +34 -34
  86. data/spec/rake/funnel/support/argument_mapper/styles/msdeploy_spec.rb +222 -222
  87. data/spec/rake/funnel/support/argument_mapper/styles/nunit_spec.rb +25 -25
  88. data/spec/rake/funnel/support/argument_mapper/styles/styles_spec.rb +214 -214
  89. data/spec/rake/funnel/support/assembly_version/from_version_files_spec.rb +66 -61
  90. data/spec/rake/funnel/support/assembly_version_writer_spec.rb +140 -140
  91. data/spec/rake/funnel/support/binary_version_reader_spec.rb +29 -29
  92. data/spec/rake/funnel/support/copier_spec.rb +58 -58
  93. data/spec/rake/funnel/support/environments/loader_spec.rb +143 -143
  94. data/spec/rake/funnel/support/internal/finder_spec.rb +229 -229
  95. data/spec/rake/funnel/support/internal/instantiate_symbol_spec.rb +182 -183
  96. data/spec/rake/funnel/support/mapper_spec.rb +87 -87
  97. data/spec/rake/funnel/support/mono_spec.rb +57 -57
  98. data/spec/rake/funnel/support/msbuild/build_tool_spec.rb +21 -21
  99. data/spec/rake/funnel/support/msdeploy/registry_patch_spec.rb +139 -139
  100. data/spec/rake/funnel/support/patch_spec.rb +108 -108
  101. data/spec/rake/funnel/support/specs_remover/Sample.csproj +28 -28
  102. data/spec/rake/funnel/support/specs_remover_spec.rb +116 -116
  103. data/spec/rake/funnel/support/template_engine_spec.rb +65 -65
  104. data/spec/rake/funnel/support/timing/report_spec.rb +129 -129
  105. data/spec/rake/funnel/support/version_info_spec.rb +333 -228
  106. data/spec/rake/funnel/support/which_spec.rb +65 -65
  107. data/spec/rake/funnel/support/zipper_spec.rb +77 -77
  108. data/spec/rake/funnel/tasks/assembly_version_spec.rb +45 -45
  109. data/spec/rake/funnel/tasks/bin_path_spec.rb +52 -52
  110. data/spec/rake/funnel/tasks/copy_spec.rb +44 -44
  111. data/spec/rake/funnel/tasks/environments_spec.rb +249 -247
  112. data/spec/rake/funnel/tasks/msbuild_spec.rb +91 -91
  113. data/spec/rake/funnel/tasks/msdeploy_spec.rb +220 -220
  114. data/spec/rake/funnel/tasks/nunit_spec.rb +74 -74
  115. data/spec/rake/funnel/tasks/paket_spec.rb +140 -142
  116. data/spec/rake/funnel/tasks/quick_template_spec.rb +62 -62
  117. data/spec/rake/funnel/tasks/side_by_side_specs_spec.rb +58 -58
  118. data/spec/rake/funnel/tasks/timing_spec.rb +133 -133
  119. data/spec/rake/funnel/tasks/zip_spec.rb +50 -50
  120. data/spec/spec_helper.rb +43 -33
  121. metadata +2 -3
  122. data/lib/rake/funnel/support/side_by_side_specs.rb +0 -3
@@ -1,33 +1,41 @@
1
- module Rake::Funnel::Support::ArgumentMapper::Styles
2
- class MSBuild
3
- attr_reader :prefix, :separator, :value_separator
4
-
5
- def initialize
6
- @prefix = '/'
7
- @separator = ':'
8
- @value_separator = '='
9
- end
10
-
11
- def generate_from(model)
12
- model.map { |switch|
13
- switch.values.flatten.map { |value|
14
- top_level(switch) + nested(value)
15
- }
16
- }.flatten(1)
17
- end
18
-
19
- private
20
- def top_level(switch)
21
- [prefix, switch.switch]
22
- end
23
-
24
- def nested(value)
25
- res = []
26
- res << separator unless value.key.nil? && value.value.nil?
27
- res << value.key
28
- res << value_separator unless value.key.nil? || value.value.nil?
29
- res << value.value
30
- res.compact
31
- end
32
- end
33
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module ArgumentMapper
5
+ module Styles
6
+ class MSBuild
7
+ attr_reader :prefix, :separator, :value_separator
8
+
9
+ def initialize
10
+ @prefix = '/'
11
+ @separator = ':'
12
+ @value_separator = '='
13
+ end
14
+
15
+ def generate_from(model)
16
+ model.map { |switch|
17
+ switch.values.flatten.map { |value|
18
+ top_level(switch) + nested(value)
19
+ }
20
+ }.flatten(1)
21
+ end
22
+
23
+ private
24
+ def top_level(switch)
25
+ [prefix, switch.switch]
26
+ end
27
+
28
+ def nested(value)
29
+ res = []
30
+ res << separator unless value.key.nil? && value.value.nil?
31
+ res << value.key
32
+ res << value_separator unless value.key.nil? || value.value.nil?
33
+ res << value.value
34
+ res.compact
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,47 +1,55 @@
1
- module Rake::Funnel::Support::ArgumentMapper::Styles
2
- class MSDeploy
3
- attr_reader :prefix, :separator, :value_separator, :value_list_separator
4
-
5
- def initialize
6
- @prefix = '-'
7
- @separator = ':'
8
- @value_separator = '='
9
- @value_list_separator = ','
10
- end
11
-
12
- def generate_from(model)
13
- model.map { |switch|
14
- switch.values.map { |item|
15
- if item.kind_of? Enumerable
16
- values = item.map.with_index { |nested, index| nested(nested, index) }
17
- else
18
- values = nested(item)
19
- end
20
-
21
- (top_level(switch) + values).flatten
22
- }
23
- }.flatten(1)
24
- end
25
-
26
- private
27
- def top_level(switch)
28
- [prefix, quote(switch.switch)]
29
- end
30
-
31
- def nested(value, index = 0)
32
- res = []
33
- res << value_list_separator unless index == 0
34
- res << separator unless value.key.nil? && value.value.nil? || index != 0
35
- res << quote(value.key)
36
- res << value_separator unless value.key.nil? || value.value.nil?
37
- res << quote(value.value)
38
- res.compact
39
- end
40
-
41
- def quote(value)
42
- value = value.gsub(/"/, '""') if value.kind_of?(String)
43
- return %Q{"#{value}"} if value =~ /\s/
44
- value
45
- end
46
- end
47
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module ArgumentMapper
5
+ module Styles
6
+ class MSDeploy
7
+ attr_reader :prefix, :separator, :value_separator, :value_list_separator
8
+
9
+ def initialize
10
+ @prefix = '-'
11
+ @separator = ':'
12
+ @value_separator = '='
13
+ @value_list_separator = ','
14
+ end
15
+
16
+ def generate_from(model)
17
+ model.map { |switch|
18
+ switch.values.map { |item|
19
+ if item.is_a?(Enumerable)
20
+ values = item.map.with_index { |nested, index| nested(nested, index) }
21
+ else
22
+ values = nested(item)
23
+ end
24
+
25
+ (top_level(switch) + values).flatten
26
+ }
27
+ }.flatten(1)
28
+ end
29
+
30
+ private
31
+ def top_level(switch)
32
+ [prefix, quote(switch.switch)]
33
+ end
34
+
35
+ def nested(value, index = 0)
36
+ res = []
37
+ res << value_list_separator unless index == 0
38
+ res << separator unless value.key.nil? && value.value.nil? || index != 0
39
+ res << quote(value.key)
40
+ res << value_separator unless value.key.nil? || value.value.nil?
41
+ res << quote(value.value)
42
+ res.compact
43
+ end
44
+
45
+ def quote(value)
46
+ value = value.gsub(/"/, '""') if value.is_a?(String)
47
+ return %{"#{value}"} if value =~ /\s/
48
+ value
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,33 +1,41 @@
1
- module Rake::Funnel::Support::ArgumentMapper::Styles
2
- class NUnit
3
- attr_reader :prefix, :separator, :value_separator
4
-
5
- def initialize
6
- @prefix = Rake::Win32.windows? ? '/' : '-'
7
- @separator = '='
8
- @value_separator = ':'
9
- end
10
-
11
- def generate_from(model)
12
- model.map { |switch|
13
- switch.values.flatten.map { |value|
14
- top_level(switch) + nested(value)
15
- }
16
- }.flatten(1)
17
- end
18
-
19
- private
20
- def top_level(switch)
21
- [prefix, switch.switch]
22
- end
23
-
24
- def nested(value)
25
- res = []
26
- res << separator unless value.key.nil? && value.value.nil?
27
- res << value.key
28
- res << value_separator unless value.key.nil? || value.value.nil?
29
- res << value.value
30
- res.compact
31
- end
32
- end
33
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module ArgumentMapper
5
+ module Styles
6
+ class NUnit
7
+ attr_reader :prefix, :separator, :value_separator
8
+
9
+ def initialize
10
+ @prefix = Rake::Win32.windows? ? '/' : '-'
11
+ @separator = '='
12
+ @value_separator = ':'
13
+ end
14
+
15
+ def generate_from(model)
16
+ model.map { |switch|
17
+ switch.values.flatten.map { |value|
18
+ top_level(switch) + nested(value)
19
+ }
20
+ }.flatten(1)
21
+ end
22
+
23
+ private
24
+ def top_level(switch)
25
+ [prefix, switch.switch]
26
+ end
27
+
28
+ def nested(value)
29
+ res = []
30
+ res << separator unless value.key.nil? && value.value.nil?
31
+ res << value.key
32
+ res << value_separator unless value.key.nil? || value.value.nil?
33
+ res << value.value
34
+ res.compact
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,3 @@
1
- module Rake::Funnel::Support::ArgumentMapper; end
2
-
3
- Dir[File.join(File.dirname(__FILE__), File.basename(__FILE__, '.rb'), '*.rb')].each do |path|
4
- require path
5
- end
1
+ Dir[File.join(File.dirname(__FILE__), File.basename(__FILE__, '.rb'), '*.rb')].each do |path|
2
+ require path
3
+ end
@@ -1,10 +1,16 @@
1
- module Rake::Funnel::Support::ArgumentMapper
2
- class Switch
3
- attr_reader :switch, :values
4
-
5
- def initialize(switch, values)
6
- @values = values
7
- @switch = switch
8
- end
9
- end
10
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module ArgumentMapper
5
+ class Switch
6
+ attr_reader :switch, :values
7
+
8
+ def initialize(switch, values)
9
+ @values = values
10
+ @switch = switch
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,10 +1,16 @@
1
- module Rake::Funnel::Support::ArgumentMapper
2
- class Value
3
- attr_reader :key, :value
4
-
5
- def initialize(value)
6
- @key = nil
7
- @value = value
8
- end
9
- end
10
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module ArgumentMapper
5
+ class Value
6
+ attr_reader :key, :value
7
+
8
+ def initialize(value)
9
+ @key = nil
10
+ @value = value
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,35 +1,39 @@
1
- module Rake::Funnel::Support::AssemblyVersion
2
- class FromVersionFiles
3
- include Rake::Funnel::Support
4
- include Enumerable
5
-
6
- attr_reader :search_pattern, :build_number, :sha
7
-
8
- def initialize(args = {})
9
- @search_pattern = args[:search_pattern] || %w(**/VERSION)
10
- @build_number = args[:build_number]
11
- @sha = args[:sha]
12
- end
13
-
14
- def each
15
- block_given? or return enum_for(__method__)
16
-
17
- files.each do |file|
18
- Rake.rake_output_message("Reading #{file}")
19
-
20
- version_info = VersionInfo.parse({
21
- version: VersionInfo.read_version_from(file),
22
- build_number: build_number,
23
- sha: sha
24
- })
25
-
26
- yield({ source: file, version_info: version_info })
27
- end
28
- end
29
-
30
- private
31
- def files
32
- Finder.new(search_pattern, self, 'No version files found.').all_or_default
33
- end
34
- end
35
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ module AssemblyVersion
5
+ class FromVersionFiles
6
+ include Rake::Funnel::Support
7
+ include Enumerable
8
+
9
+ attr_reader :search_pattern, :metadata
10
+
11
+ def initialize(args = {})
12
+ @search_pattern = args[:search_pattern] || %w(**/VERSION)
13
+ @metadata = args[:metadata]
14
+ end
15
+
16
+ def each
17
+ block_given? or return enum_for(__method__)
18
+
19
+ files.each do |file|
20
+ Rake.rake_output_message("Reading #{file}")
21
+
22
+ version_info = VersionInfo.parse(
23
+ version: VersionInfo.read_version_from(file),
24
+ metadata: metadata
25
+ )
26
+
27
+ yield({ source: file, version_info: version_info })
28
+ end
29
+ end
30
+
31
+ private
32
+ def files
33
+ Finder.new(search_pattern, self, 'No version files found.').all_or_default
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
- using System.Reflection;
2
-
3
- <% version_info.each do |key, value| %>
4
- [assembly: <%= key.pascalize %>("<%= value %>")]
5
- <% end %>
1
+ using System.Reflection;
2
+
3
+ <% version_info.each do |key, value| %>
4
+ [assembly: <%= key.pascalize %>("<%= value %>")]
5
+ <% end %>
@@ -1,12 +1,12 @@
1
- namespace System
2
- open System.Reflection
3
-
4
- <% version_info.each do |key, value| %>
5
- [<assembly: <%= key.pascalize %>("<%= value %>")>]
6
- <% end %>
7
- do ()
8
-
9
- <% if version_info.assembly_file_version %>
10
- module internal AssemblyVersionInformation =
11
- let [<Literal>] Version = "<%= version_info.assembly_file_version %>"
12
- <% end %>
1
+ namespace System
2
+ open System.Reflection
3
+
4
+ <% version_info.each do |key, value| %>
5
+ [<assembly: <%= key.pascalize %>("<%= value %>")>]
6
+ <% end %>
7
+ do ()
8
+
9
+ <% if version_info.assembly_file_version %>
10
+ module internal AssemblyVersionInformation =
11
+ let [<Literal>] Version = "<%= version_info.assembly_file_version %>"
12
+ <% end %>
@@ -1,5 +1,5 @@
1
- Imports System.Reflection
2
-
3
- <% version_info.each do |key, value| %>
4
- <Assembly: <%= key.pascalize %>("<%= value %>")>
5
- <% end %>
1
+ Imports System.Reflection
2
+
3
+ <% version_info.each do |key, value| %>
4
+ <Assembly: <%= key.pascalize %>("<%= value %>")>
5
+ <% end %>
@@ -1,52 +1,56 @@
1
- require 'erb'
2
-
3
- Dir[File.join(File.dirname(__FILE__), 'assembly_version', '*.rb')].each do |path|
4
- require path
5
- end
6
-
7
- module Rake::Funnel::Support
8
- class AssemblyVersionWriter
9
- include Rake::Funnel::Support::InstantiateSymbol
10
- instantiate AssemblyVersion
11
-
12
- def initialize(type = :FromVersionFiles, args = {})
13
- @type = create(type, args)
14
- end
15
-
16
- def write(target_path, languages = [])
17
- @type.each do |info|
18
- source = info[:source]
19
- version_info = info[:version_info]
20
-
21
- [languages].flatten.each do |language|
22
- target = target_path.call(language, version_info, source)
23
-
24
- contents = evaluate_erb(language, version_info, target)
25
-
26
- Rake.rake_output_message("Writing #{target}")
27
- File.write(target, contents)
28
- end
29
- end
30
- end
31
-
32
- private
33
- def evaluate_erb(language, version_info, target)
34
- template = template_for(language)
35
-
36
- render = ERB.new(template, nil, '%<>')
37
- render.filename = target
38
- render.result(get_binding(version_info))
39
- end
40
-
41
- def template_for(language)
42
- template = File.join(File.dirname(__FILE__), 'assembly_version', 'languages', language.to_s)
43
- raise "Language is not supported: #{language}" unless File.readable?(template)
44
-
45
- File.read(template)
46
- end
47
-
48
- def get_binding(version_info)
49
- binding
50
- end
51
- end
52
- end
1
+ require 'erb'
2
+
3
+ Dir[File.join(File.dirname(__FILE__), 'assembly_version', '*.rb')].each do |path|
4
+ require path
5
+ end
6
+
7
+ module Rake
8
+ module Funnel
9
+ module Support
10
+ class AssemblyVersionWriter
11
+ include InstantiateSymbol
12
+ instantiate AssemblyVersion
13
+
14
+ def initialize(type = :FromVersionFiles, args = {})
15
+ @type = create(type, args)
16
+ end
17
+
18
+ def write(target_path, languages = [])
19
+ @type.each do |info|
20
+ source = info[:source]
21
+ version_info = info[:version_info]
22
+
23
+ [languages].flatten.each do |language|
24
+ target = target_path.call(language, version_info, source)
25
+
26
+ contents = evaluate_erb(language, version_info, target)
27
+
28
+ Rake.rake_output_message("Writing #{target}")
29
+ File.write(target, contents)
30
+ end
31
+ end
32
+ end
33
+
34
+ private
35
+ def evaluate_erb(language, version_info, target)
36
+ template = template_for(language)
37
+
38
+ render = ERB.new(template, nil, '%<>')
39
+ render.filename = target
40
+ render.result(get_binding(version_info))
41
+ end
42
+
43
+ def template_for(language)
44
+ template = File.join(File.dirname(__FILE__), 'assembly_version', 'languages', language.to_s)
45
+ raise "Language is not supported: #{language}" unless File.readable?(template)
46
+
47
+ File.read(template)
48
+ end
49
+
50
+ def get_binding(version_info)
51
+ binding
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,32 +1,37 @@
1
- module Rake::Funnel::Support
2
- class BinaryVersionReader
3
- class << self
4
- KNOWN_ATTRIBUTES = [:company_name, :file_description, :file_version, :legal_copyright, :product_name, :product_version, :assembly_version]
5
- SEPARATOR = "\0"
6
- TERMINATOR = "\0" * 3
7
-
8
- def read_from(assembly)
9
- binary = File.binread(assembly)
10
-
11
- hash = KNOWN_ATTRIBUTES.map { |attr|
12
- read_attribute(binary, attr)
13
- }
14
- .inject({}) { |memo, attr|
15
- memo.merge(attr)
16
- }
17
-
18
- VersionInfo.new(hash)
19
- end
20
-
21
- private
22
- def read_attribute(binary, attr)
23
- binary_attr = attr.pascalize.gsub(/(.)/) { |match| match + SEPARATOR }
24
-
25
- data = binary.match(/#{binary_attr}#{SEPARATOR}+(.*?)#{TERMINATOR}/)
26
- return {} if data.nil?
27
-
28
- { "#{attr}" => data[1].gsub(/#{SEPARATOR}/, '') }
29
- end
30
- end
31
- end
32
- end
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ class BinaryVersionReader
5
+ class << self
6
+ KNOWN_ATTRIBUTES = [:company_name, :file_description, :file_version, :legal_copyright, :product_name, :product_version, :assembly_version]
7
+ SEPARATOR = "\0"
8
+ TERMINATOR = "\0" * 3
9
+
10
+ def read_from(assembly)
11
+ binary = File.binread(assembly)
12
+
13
+ attributes = KNOWN_ATTRIBUTES.map { |attr|
14
+ read_attribute(binary, attr)
15
+ }
16
+
17
+ hash = attributes.inject({}) { |memo, attr|
18
+ memo.merge(attr)
19
+ }
20
+
21
+ VersionInfo.new(hash)
22
+ end
23
+
24
+ private
25
+ def read_attribute(binary, attr)
26
+ binary_attr = attr.pascalize.gsub(/(.)/) { |match| match + SEPARATOR }
27
+
28
+ data = binary.match(/#{binary_attr}#{SEPARATOR}+(.*?)#{TERMINATOR}/)
29
+ return {} if data.nil?
30
+
31
+ { "#{attr}" => data[1].gsub(/#{SEPARATOR}/, '') }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end