albacore 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/README.markdown +84 -81
  2. data/VERSION +1 -1
  3. data/install_dependencies.rb +10 -10
  4. data/lib/albacore.rb +10 -2
  5. data/lib/albacore/assemblyinfo.rb +100 -100
  6. data/lib/albacore/assemblyinfolanguages/csharpengine.rb +14 -0
  7. data/lib/albacore/assemblyinfolanguages/vbnetengine.rb +14 -0
  8. data/lib/albacore/docu.rb +39 -0
  9. data/lib/albacore/exec.rb +23 -0
  10. data/lib/albacore/expandtemplates.rb +73 -71
  11. data/lib/albacore/msbuild.rb +56 -61
  12. data/lib/albacore/mspectestrunner.rb +44 -42
  13. data/lib/albacore/nant.rb +39 -0
  14. data/lib/albacore/ncoverconsole.rb +68 -61
  15. data/lib/albacore/ncoverreport.rb +56 -55
  16. data/lib/albacore/ncoverreports/assemblyfilter.rb +7 -7
  17. data/lib/albacore/ncoverreports/branchcoverage.rb +7 -7
  18. data/lib/albacore/ncoverreports/classfilter.rb +5 -5
  19. data/lib/albacore/ncoverreports/codecoveragebase.rb +22 -22
  20. data/lib/albacore/ncoverreports/cyclomaticcomplexity.rb +19 -19
  21. data/lib/albacore/ncoverreports/documentfilter.rb +5 -5
  22. data/lib/albacore/ncoverreports/fullcoveragereport.rb +17 -17
  23. data/lib/albacore/ncoverreports/methodcoverage.rb +7 -7
  24. data/lib/albacore/ncoverreports/methodfilter.rb +5 -5
  25. data/lib/albacore/ncoverreports/namespacefilter.rb +5 -5
  26. data/lib/albacore/ncoverreports/reportfilterbase.rb +23 -23
  27. data/lib/albacore/ncoverreports/summaryreport.rb +18 -18
  28. data/lib/albacore/ncoverreports/symbolcoverage.rb +6 -7
  29. data/lib/albacore/ndepend.rb +35 -0
  30. data/lib/albacore/nunittestrunner.rb +36 -35
  31. data/lib/albacore/plink.rb +48 -0
  32. data/lib/albacore/sftp.rb +33 -31
  33. data/lib/albacore/sqlcmd.rb +54 -51
  34. data/lib/albacore/ssh.rb +35 -33
  35. data/lib/albacore/support/albacore_helper.rb +1 -4
  36. data/lib/albacore/support/attrmethods.rb +25 -0
  37. data/lib/albacore/support/failure.rb +17 -17
  38. data/lib/albacore/support/globalconfig.rb +6 -0
  39. data/lib/albacore/support/logging.rb +30 -28
  40. data/lib/albacore/support/runcommand.rb +41 -41
  41. data/lib/albacore/support/yamlconfig.rb +23 -27
  42. data/lib/albacore/unzip.rb +28 -0
  43. data/lib/albacore/xbuild.rb +54 -0
  44. data/lib/albacore/xunittestrunner.rb +40 -43
  45. data/lib/albacore/zipdirectory.rb +72 -63
  46. data/lib/rake/assemblyinfotask.rb +12 -11
  47. data/lib/rake/docutask.rb +17 -0
  48. data/lib/rake/exectask.rb +18 -0
  49. data/lib/rake/expandtemplatestask.rb +12 -11
  50. data/lib/rake/msbuildtask.rb +13 -12
  51. data/lib/rake/mspectask.rb +12 -11
  52. data/lib/rake/nanttask.rb +17 -0
  53. data/lib/rake/ncoverconsoletask.rb +12 -11
  54. data/lib/rake/ncoverreporttask.rb +12 -11
  55. data/lib/rake/ndependtask.rb +23 -0
  56. data/lib/rake/nunittask.rb +12 -11
  57. data/lib/rake/plinktask.rb +23 -0
  58. data/lib/rake/renametask.rb +15 -15
  59. data/lib/rake/sftptask.rb +11 -10
  60. data/lib/rake/sqlcmdtask.rb +13 -12
  61. data/lib/rake/sshtask.rb +11 -10
  62. data/lib/rake/support/albacoretask.rb +16 -15
  63. data/lib/rake/unziptask.rb +17 -0
  64. data/lib/rake/xbuildtask.rb +22 -0
  65. data/lib/rake/xunittask.rb +12 -11
  66. data/lib/rake/ziptask.rb +12 -11
  67. data/rakefile.rb +255 -204
  68. data/spec/assemblyinfo_spec.rb +426 -221
  69. data/spec/assemblyinfotask_spec.rb +21 -21
  70. data/spec/docu_spec.rb +70 -0
  71. data/spec/docutask_spec.rb +39 -0
  72. data/spec/exec_spec.rb +23 -0
  73. data/spec/exectask_spec.rb +31 -0
  74. data/spec/expandtemplates_spec.rb +149 -148
  75. data/spec/expandtemplatestask_spec.rb +21 -21
  76. data/spec/msbuild_spec.rb +150 -139
  77. data/spec/msbuildtask_spec.rb +21 -21
  78. data/spec/mspectask_spec.rb +21 -21
  79. data/spec/nant_spec.rb +101 -0
  80. data/spec/nanttask_spec.rb +31 -0
  81. data/spec/ncoverconsole_spec.rb +253 -221
  82. data/spec/ncoverconsoletask_spec.rb +21 -21
  83. data/spec/ncoverreport_spec.rb +538 -523
  84. data/spec/ncoverreporttask_spec.rb +21 -21
  85. data/spec/ndepend_spec.rb +49 -0
  86. data/spec/{commandtask_spec.rb → ndependtask_spec.rb} +10 -10
  87. data/spec/nunittask_spec.rb +21 -21
  88. data/spec/nunittestrunner_spec.rb +6 -6
  89. data/spec/patches/docu_patch.rb +13 -0
  90. data/spec/patches/system_patch.rb +18 -18
  91. data/spec/patches/tasklib_patch.rb +10 -10
  92. data/spec/plink_spec.rb +61 -0
  93. data/spec/plinktask_spec.rb +31 -0
  94. data/spec/renametask_spec.rb +21 -21
  95. data/spec/sftp_spec.rb +24 -24
  96. data/spec/sftptask_spec.rb +31 -31
  97. data/spec/sqlcmd_spec.rb +118 -120
  98. data/spec/sqlcmdtask_spec.rb +21 -21
  99. data/spec/ssh_spec.rb +36 -37
  100. data/spec/sshtask_spec.rb +29 -29
  101. data/spec/support/TestSolution/NDependProject.xml +315 -0
  102. data/spec/support/TestSolution/TestSolution.XUnitTests/Class1.cs +12 -12
  103. data/spec/support/TestSolution/TestSolution.XUnitTests/FailingTestFixture.cs +14 -0
  104. data/spec/support/TestSolution/TestSolution.XUnitTests/TestSolution.XUnitTests.csproj +1 -0
  105. data/spec/support/TestSolution/TestSolution.build +25 -0
  106. data/spec/support/assemblyinfotester.rb +40 -38
  107. data/spec/support/expandtemplatestestdata.rb +73 -73
  108. data/spec/support/msbuildtestdata.rb +28 -28
  109. data/spec/support/nanttestdata.rb +33 -0
  110. data/spec/support/ncoverconsoletestdata.rb +18 -0
  111. data/spec/support/ncoverreporttestdata.rb +24 -24
  112. data/spec/support/spec_helper.rb +2 -1
  113. data/spec/support/yamlconfig/msbuild.yml +3 -0
  114. data/spec/support/yamlconfig/yaml_autoconfig_test.yml +1 -0
  115. data/spec/support/ziptestdata.rb +11 -6
  116. data/spec/xunit_spec.rb +63 -0
  117. data/spec/xunittask_spec.rb +19 -19
  118. data/spec/yamlconfig_spec.rb +38 -52
  119. data/spec/zip_spec.rb +56 -11
  120. data/spec/ziptask_spec.rb +22 -22
  121. metadata +53 -8
  122. data/lib/albacore/command.rb +0 -23
  123. data/lib/rake/commandtask.rb +0 -16
  124. data/spec/command_spec.rb +0 -23
@@ -1,81 +1,84 @@
1
- # Welcome to the Albacore project.
2
-
3
- Albacore is intended to be a professional quality suite of Rake tasks to help automate the process of building a .NET based system. All tasks are built using a test-first approach through rspec, and all tests are included in the Albacore gem.
4
-
5
- ## How To Install Albacore From Gemcutter Gems:
6
-
7
- If you would like to install the current, stable release of Albacore, you can do so easily through the Gemcutter gem server. Follow these simple instructions and you will be good to go.
8
-
9
- **Step 1:** Setup Gemcutter as a gem source
10
-
11
- > gem source -a http://gemcutter.org
12
-
13
- (note: you only need to do this once for any given computer that is going to install gems from gemcutter.)
14
-
15
- **Step 2:** Install the Albacore gem
16
-
17
- > gem install albacore
18
-
19
- (note: as of v0.0.7, the "albacore" gem is spelled with a lowercase "a".)
20
-
21
- ## How To Manually Build And Install The Albacore Gem
22
-
23
- If you would like to install the latest source code for Albacore, and get all the new features and functionality (possibly in an unstable form), you can manually build and install the Albacore gem. Follow these simple instructions and you will be good to go.
24
-
25
- **Step 1:** Clone Albacore
26
-
27
- Use your Github account to fork Albacore, or clone it directly from my public clone URL.
28
-
29
- > git clone git://github.com/derickbailey/Albacore.git Albacore
30
-
31
- **Step 2:** Build the gem
32
-
33
- In your local clone of Albacore, use the jeweler rake tasks to build the latest version of the Albacore code into a gem.
34
-
35
- > rake jeweler:gemspec
36
- >
37
- > rake jeweler:build
38
-
39
- this will produce an 'albacore-#.#.#.gem' file in the 'pkg' folder, where '#.#.#' is the version number. For example 'albacore-0.0.7.gem'.
40
-
41
- **Step 3:** Install the gem
42
-
43
- After building the gem, you can install it from your local file system.
44
-
45
- > gem install -l pkg/albacore-#.#.#.gem
46
-
47
- where '#.#.#' is the version number of the gem. For example 'albacore-0.0.7.gem'
48
-
49
- ## How To Use Albacore
50
-
51
- After installing Albacore, you only need to
52
-
53
- require 'albacore'
54
-
55
- in your rakefile. This will allow you to use the tasks that Albacore includes.
56
-
57
- desc "Run a sample build using the MSBuildTask"
58
- msbuildtask do |msb|
59
- msb.properties = {:configuration => :Debug}
60
- msb.targets [:Clean, :Build]
61
- msb.solution = "spec/support/TestSolution/TestSolution.sln"
62
- end
63
-
64
- Beyond the simple example, check out the [Albacore Wiki](http://wiki.github.com/derickbailey/Albacore) for detailed instructions on how to use the built in tasks and their options.
65
-
66
- ## How To Contribute, Collaborate, Communicate
67
-
68
- If you'd like to get involved with the Albacore framework, we have a discussion group over at google: **[AlbacoreDev](http://groups.google.com/group/albacoredev)**
69
-
70
- Anyone can fork the main repository and submit patches, as well. And lastly, the [wiki](http://wiki.github.com/derickbailey/Albacore) and [issues list](http://github.com/derickbailey/Albacore/issues) are also open for additions, edits, and discussion.
71
-
72
- ## Contributors
73
-
74
- Many thanks for contributions to Albacore are due:
75
-
76
- * [Ben Hall](http://github.com/benhall): SSH, SFTP, ZipDirectory, Rename, YAML auto config, Wiki pages, and other great additions
77
- * [Steven Harman](http://github.com/stevenharman): Finding some wicked bugs, patching nunit test runner, and working on the nant task
78
- * [Andreone](http://github.com/Andreone): Significant Wiki contributions, questions and contributions on the google group
79
- * [Brian Donahue](http://github.com/briandonahue): Inspiration and initial code for the ExpandTemplates task
80
- * [Sean Biefeld](http://github.com/seanbiefeld): MSpecTestRunner for NCoverConsole
81
- * [Kevin Colyar](http://github.com/kevincolyar): Testing and updating of MSBuild to work with Cygwin
1
+ # Welcome to the Albacore project.
2
+
3
+ Albacore is intended to be a professional quality suite of Rake tasks to help automate the process of building a .NET based system. All tasks are built using a test-first approach through rspec, and all tests are included in the Albacore gem.
4
+
5
+ ## How To Install Albacore From Gemcutter Gems:
6
+
7
+ If you would like to install the current, stable release of Albacore, you can do so easily through the Gemcutter gem server. Follow these simple instructions and you will be good to go.
8
+
9
+ **Step 1:** Setup Gemcutter as a gem source
10
+
11
+ > gem source -a http://gemcutter.org
12
+
13
+ (note: you only need to do this once for any given computer that is going to install gems from gemcutter.)
14
+
15
+ **Step 2:** Install the Albacore gem
16
+
17
+ > gem install albacore
18
+
19
+ (note: as of v0.0.7, the "albacore" gem is spelled with a lowercase "a".)
20
+
21
+ ## How To Manually Build And Install The Albacore Gem
22
+
23
+ If you would like to install the latest source code for Albacore, and get all the new features and functionality (possibly in an unstable form), you can manually build and install the Albacore gem. Follow these simple instructions and you will be good to go.
24
+
25
+ **Step 1:** Clone Albacore
26
+
27
+ Use your Github account to fork Albacore, or clone it directly from my public clone URL.
28
+
29
+ > git clone git://github.com/derickbailey/Albacore.git Albacore
30
+
31
+ **Step 2:** Build the gem
32
+
33
+ In your local clone of Albacore, use the jeweler rake tasks to build the latest version of the Albacore code into a gem.
34
+
35
+ > rake jeweler:gemspec
36
+ >
37
+ > rake jeweler:build
38
+
39
+ this will produce an 'albacore-#.#.#.gem' file in the 'pkg' folder, where '#.#.#' is the version number. For example 'albacore-0.0.7.gem'.
40
+
41
+ **Step 3:** Install the gem
42
+
43
+ After building the gem, you can install it from your local file system.
44
+
45
+ > gem install -l pkg/albacore-#.#.#.gem
46
+
47
+ where '#.#.#' is the version number of the gem. For example 'albacore-0.0.7.gem'
48
+
49
+ ## How To Use Albacore
50
+
51
+ After installing Albacore, you only need to
52
+
53
+ require 'albacore'
54
+
55
+ in your rakefile. This will allow you to use the tasks that Albacore includes.
56
+
57
+ desc "Run a sample build using the MSBuildTask"
58
+ msbuildtask do |msb|
59
+ msb.properties = {:configuration => :Debug}
60
+ msb.targets [:Clean, :Build]
61
+ msb.solution = "spec/support/TestSolution/TestSolution.sln"
62
+ end
63
+
64
+ Beyond the simple example, check out the [Albacore Wiki](http://wiki.github.com/derickbailey/Albacore) for detailed instructions on how to use the built in tasks and their options.
65
+
66
+ ## How To Contribute, Collaborate, Communicate
67
+
68
+ If you'd like to get involved with the Albacore framework, we have a discussion group over at google: **[AlbacoreDev](http://groups.google.com/group/albacoredev)**
69
+
70
+ Anyone can fork the main repository and submit patches, as well. And lastly, the [wiki](http://wiki.github.com/derickbailey/Albacore) and [issues list](http://github.com/derickbailey/Albacore/issues) are also open for additions, edits, and discussion.
71
+
72
+ ## Contributors
73
+
74
+ Many thanks for contributions to Albacore are due (in alphabetical order):
75
+
76
+ * [Andreone](http://github.com/Andreone): Significant Wiki contributions, questions and contributions on the google group
77
+ * [Ben Hall](http://github.com/benhall): Primary contributor. SSH, SFTP, ZipDirectory, Rename, YAML auto config, Wiki pages, and many other great additions
78
+ * [Brian Donahue](http://github.com/briandonahue): Inspiration and initial code for the ExpandTemplates task
79
+ * [Hibri Marzook](http://github.com/hibri): the PLink and NDepend tasks
80
+ * [James Gregory](http://github.com/jagregory): the Docu task
81
+ * [Kevin Colyar](http://github.com/kevincolyar): Testing and updating of MSBuild to work with Cygwin
82
+ * [Mark Wilkins](http://github.com/markwilk): VB.NET Language Generator For The AssemblyInfo Task
83
+ * [Sean Biefeld](http://github.com/seanbiefeld): MSpecTestRunner for NCoverConsole
84
+ * [Steven Harman](http://github.com/stevenharman): Finding some wicked bugs, patching nunit test runner, and the nant task
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.9
1
+ 0.1.0
@@ -11,12 +11,12 @@ end
11
11
 
12
12
  def install(lib)
13
13
  begin
14
- matches = Gem.source_index.find_name(lib)
14
+ matches = Gem.source_index.find_name(lib)
15
15
  if matches.empty?
16
- puts "Installing #{lib}"
17
- Gem::GemRunner.new.run ['install', lib]
16
+ puts "Installing #{lib}"
17
+ Gem::GemRunner.new.run ['install', lib]
18
18
  else
19
- puts "Found #{lib} gem - skipping"
19
+ puts "Found #{lib} gem - skipping"
20
20
  end
21
21
  rescue Gem::SystemExitException => e
22
22
  end
@@ -24,12 +24,12 @@ end
24
24
 
25
25
  def add_source(url)
26
26
  begin
27
- if Gem.sources.include?(url)
28
- puts "Found #{url} gem source = skipping"
29
- else
30
- puts "Adding #{url} gem source."
31
- Gem::GemRunner.new.run ['sources', '-a', url]
32
- end
27
+ if Gem.sources.include?(url)
28
+ puts "Found #{url} gem source = skipping"
29
+ else
30
+ puts "Adding #{url} gem source."
31
+ Gem::GemRunner.new.run ['sources', '-a', url]
32
+ end
33
33
  rescue Gem::SystemExitException => e
34
34
  end
35
35
  end
@@ -5,6 +5,14 @@ $: << File.expand_path(File.join(File.dirname(__FILE__), "rake"))
5
5
 
6
6
  require 'logging'
7
7
 
8
+ runtime_is_ironruby = (!defined?(IRONRUBY_VERSION).nil?)
9
+
8
10
  Dir.glob(File.join(File.expand_path(File.dirname(__FILE__)), 'rake/support/*.rb')).each {|f| require f }
9
- Dir.glob(File.join(File.expand_path(File.dirname(__FILE__)), 'rake/*.rb')).each {|f| require f }
10
- Dir.glob(File.join(File.expand_path(File.dirname(__FILE__)), 'albacore/*.rb')).each {|f| require f }
11
+
12
+ Dir.glob(File.join(File.expand_path(File.dirname(__FILE__)), 'rake/*.rb')).reject{ |f|
13
+ f if runtime_is_ironruby && (f.include?("ssh") || f.include?("sftp"))
14
+ }.each {|f| require f }
15
+
16
+ Dir.glob(File.join(File.expand_path(File.dirname(__FILE__)), 'albacore/*.rb')).reject{ |f|
17
+ f if runtime_is_ironruby && (f.include?("ssh") || f.include?("sftp"))
18
+ }.each {|f| require f }
@@ -1,104 +1,104 @@
1
1
  require 'albacore/support/albacore_helper'
2
+ require 'albacore/assemblyinfolanguages/csharpengine'
3
+ require 'albacore/assemblyinfolanguages/vbnetengine'
2
4
 
3
5
  class AssemblyInfo
4
- include Failure
5
- include YAMLConfig
6
-
7
- attr_accessor :version, :title, :description, :output_file, :custom_attributes
8
- attr_accessor :copyright, :com_visible, :com_guid, :company_name, :product_name
9
- attr_accessor :file_version, :trademark, :namespaces
10
-
11
- def initialize
12
- @namespaces = []
13
- super()
14
- end
15
-
16
- def write
17
- write_assemblyinfo @output_file
18
- end
19
-
20
- def write_assemblyinfo(assemblyinfo_file)
21
- valid = check_output_file assemblyinfo_file
22
- return if !valid
23
-
24
- asm_data = build_assembly_info_data
6
+ extend AttrMethods
7
+ include Failure
8
+ include YAMLConfig
9
+
10
+ attr_accessor :version, :title, :description, :output_file, :custom_attributes
11
+ attr_accessor :copyright, :com_visible, :com_guid, :company_name, :product_name
12
+ attr_accessor :file_version, :trademark, :lang_engine
13
+
14
+ attr_array :namespaces
15
+ attr_hash :custom_attributes
16
+
17
+ def initialize
18
+ @namespaces = []
19
+ super()
20
+ end
21
+
22
+ def write
23
+ @lang_engine = CSharpEngine.new unless check_lang_engine
24
+ write_assemblyinfo @output_file
25
+ end
26
+
27
+ def write_assemblyinfo(assemblyinfo_file)
28
+ valid = check_output_file assemblyinfo_file
29
+ return if !valid
30
+
31
+ asm_data = build_assembly_info_data
25
32
 
26
- @logger.info "Generating Assembly Info File At: " + File.expand_path(assemblyinfo_file)
27
- File.open(assemblyinfo_file, 'w') do |f|
28
- f.write asm_data
29
- end
30
- end
31
-
32
- def check_output_file(file)
33
- return true if file
34
- fail_with_message 'output_file cannot be nil'
35
- return false
36
- end
37
-
38
- def build_assembly_info_data
39
- asm_data = build_using_statements + "\n"
40
-
41
- asm_data << build_attribute("AssemblyTitle", @title) if @title != nil
42
- asm_data << build_attribute("AssemblyDescription", @description) if @description != nil
43
- asm_data << build_attribute("AssemblyCompany", @company_name) if @company_name != nil
44
- asm_data << build_attribute("AssemblyProduct", @product_name) if @product_name != nil
45
-
46
- asm_data << build_attribute("AssemblyCopyright", @copyright) if @copyright != nil
47
- asm_data << build_attribute("AssemblyTrademark", @trademark) if @trademark != nil
48
-
49
- asm_data << build_attribute("ComVisible", @com_visible) if @com_visible != nil
50
- asm_data << build_attribute("Guid", @com_guid) if @com_guid != nil
51
-
52
- asm_data << build_attribute("AssemblyVersion", @version) if @version != nil
53
- asm_data << build_attribute("AssemblyFileVersion", @file_version) if @file_version != nil
54
-
55
- asm_data << "\n"
56
- if @custom_attributes != nil
57
- attributes = build_custom_attributes()
58
- asm_data << attributes.join
59
- asm_data << "\n"
60
- end
61
-
62
- asm_data
63
- end
64
-
65
- def custom_attributes(attributes)
66
- @custom_attributes = attributes
67
- end
68
-
69
- def namespaces(namespaces)
70
- @namespaces = namespaces
71
- end
72
-
73
- def build_using_statements
74
- @namespaces = [] if @namespaces.nil?
75
-
76
- @namespaces << "System.Reflection"
77
- @namespaces << "System.Runtime.InteropServices"
78
-
79
- namespaces = ''
80
- @namespaces.each do |ns|
81
- namespaces << "using #{ns};\n"
82
- end
83
-
84
- namespaces
85
- end
86
-
87
- def build_attribute(attr_name, attr_data)
88
- attribute = "[assembly: #{attr_name}("
89
- attribute << "#{attr_data.inspect}" if attr_data != nil
90
- attribute << ")]\n"
91
-
92
- @logger.debug "Build Assembly Info Attribute: " + attribute
93
- attribute
94
- end
95
-
96
- def build_custom_attributes()
97
- attributes = []
98
- @custom_attributes.each do |key, value|
99
- attributes << build_attribute(key, value)
100
- end
101
- attributes
102
- end
103
-
104
- end
33
+ @logger.info "Generating Assembly Info File At: " + File.expand_path(assemblyinfo_file)
34
+ File.open(assemblyinfo_file, 'w') do |f|
35
+ f.write asm_data
36
+ end
37
+ end
38
+
39
+ def check_output_file(file)
40
+ return true if file
41
+ fail_with_message 'output_file cannot be nil'
42
+ return false
43
+ end
44
+
45
+ def check_lang_engine
46
+ return !@lang_engine.nil?
47
+ end
48
+
49
+ def build_assembly_info_data
50
+ asm_data = build_using_statements + "\n"
51
+
52
+ asm_data << build_attribute("AssemblyTitle", @title) if @title != nil
53
+ asm_data << build_attribute("AssemblyDescription", @description) if @description != nil
54
+ asm_data << build_attribute("AssemblyCompany", @company_name) if @company_name != nil
55
+ asm_data << build_attribute("AssemblyProduct", @product_name) if @product_name != nil
56
+
57
+ asm_data << build_attribute("AssemblyCopyright", @copyright) if @copyright != nil
58
+ asm_data << build_attribute("AssemblyTrademark", @trademark) if @trademark != nil
59
+
60
+ asm_data << build_attribute("ComVisible", @com_visible) if @com_visible != nil
61
+ asm_data << build_attribute("Guid", @com_guid) if @com_guid != nil
62
+
63
+ asm_data << build_attribute("AssemblyVersion", @version) if @version != nil
64
+ asm_data << build_attribute("AssemblyFileVersion", @file_version) if @file_version != nil
65
+
66
+ asm_data << "\n"
67
+ if @custom_attributes != nil
68
+ attributes = build_custom_attributes()
69
+ asm_data << attributes.join
70
+ asm_data << "\n"
71
+ end
72
+
73
+ asm_data
74
+ end
75
+
76
+ def build_using_statements
77
+ @namespaces = [] if @namespaces.nil?
78
+
79
+ @namespaces << "System.Reflection"
80
+ @namespaces << "System.Runtime.InteropServices"
81
+
82
+ ns = ''
83
+ @namespaces.each do |n|
84
+ ns << @lang_engine.build_using_statement(n)
85
+ end
86
+
87
+ ns
88
+ end
89
+
90
+ def build_attribute(attr_name, attr_data)
91
+ attribute = @lang_engine.build_attribute(attr_name, attr_data)
92
+ @logger.debug "Build Assembly Info Attribute: " + attribute
93
+ attribute
94
+ end
95
+
96
+ def build_custom_attributes()
97
+ attributes = []
98
+ @custom_attributes.each do |key, value|
99
+ attributes << build_attribute(key, value)
100
+ end
101
+ attributes
102
+ end
103
+
104
+ end
@@ -0,0 +1,14 @@
1
+ class CSharpEngine
2
+ def build_attribute(attr_name, attr_data)
3
+ attribute = "[assembly: #{attr_name}("
4
+ attribute << "#{attr_data.inspect}" if attr_data != nil
5
+ attribute << ")]\n"
6
+
7
+ attribute
8
+ end
9
+
10
+ def build_using_statement(namespace)
11
+ "using #{namespace};\n"
12
+ end
13
+
14
+ end
@@ -0,0 +1,14 @@
1
+ class VbNetEngine
2
+ def build_attribute(attr_name, attr_data)
3
+ attribute = "<assembly: #{attr_name}("
4
+ attribute << "#{attr_data.inspect}" if attr_data != nil
5
+ attribute << ")>\n"
6
+
7
+ attribute
8
+ end
9
+
10
+ def build_using_statement(namespace)
11
+ "Imports #{namespace}\n"
12
+ end
13
+
14
+ end