RubyPackager 0.2.1.20101110 → 1.0.0.20120301

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.
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -10,91 +10,91 @@ module RubyPackager
10
10
 
11
11
  # Information about the author
12
12
  # map< Symbol, Object >
13
- attr_reader :AuthorInfo
13
+ attr_reader :author_info
14
14
 
15
15
  # Information about the project
16
16
  # map< Symbol, Object >
17
- attr_reader :ProjectInfo
17
+ attr_reader :project_info
18
18
 
19
19
  # Information about the executables
20
20
  # list< map< Symbol, Object > >
21
- attr_reader :ExecutablesInfo
21
+ attr_reader :executables_info
22
22
 
23
23
  # Information about the installer
24
24
  # map< Symbol, Object >
25
- attr_reader :InstallInfo
25
+ attr_reader :install_info
26
26
 
27
27
  # Information about SourceForge
28
28
  # map< Symbol, Object >
29
- attr_reader :SFInfo
29
+ attr_reader :sf_info
30
30
 
31
31
  # Information about RubyForge
32
32
  # map< Symbol, Object >
33
- attr_reader :RFInfo
33
+ attr_reader :rf_info
34
34
 
35
35
  # Information about the Gem
36
36
  # map< Symbol, Object >
37
- attr_reader :GemInfo
37
+ attr_reader :gem_info
38
38
 
39
39
  # List of core files patterns
40
40
  # list< String >
41
- attr_reader :CoreFiles
41
+ attr_reader :core_files
42
42
 
43
43
  # List of additional files patterns
44
44
  # list< String >
45
- attr_reader :AdditionalFiles
45
+ attr_reader :additional_files
46
46
 
47
47
  # List of test files patterns
48
48
  # list< String >
49
- attr_reader :TestFiles
49
+ attr_reader :test_files
50
50
 
51
51
  # Constructor
52
52
  def initialize
53
53
  # This sets also default values
54
- @AuthorInfo = {}
55
- @ProjectInfo = {}
56
- @ExecutablesInfo = []
57
- @InstallInfo = {}
58
- @SFInfo = {}
59
- @RFInfo = {}
60
- @GemInfo = {}
54
+ @author_info = {}
55
+ @project_info = {}
56
+ @executables_info = []
57
+ @install_info = {}
58
+ @sf_info = {}
59
+ @rf_info = {}
60
+ @gem_info = {}
61
61
  # Files patterns list
62
- @CoreFiles = []
63
- @AdditionalFiles = []
64
- @TestFiles = []
62
+ @core_files = []
63
+ @additional_files = []
64
+ @test_files = []
65
65
  end
66
66
 
67
67
  # Add Author properties
68
68
  #
69
- # Parameters:
69
+ # Parameters::
70
70
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
71
- # ** *:Name* (_String_): The author name
72
- # ** *:EMail* (_String_): The author's email
73
- # ** *:WebPageURL* (_String_): The author's web page
74
- # Return:
71
+ # * *:name* (_String_): The author name
72
+ # * *:email* (_String_): The author's email
73
+ # * *:web_page_url* (_String_): The author's web page
74
+ # Return::
75
75
  # * _ReleaseInfo_: self
76
76
  def author(iParams)
77
- @AuthorInfo.merge!(iParams)
77
+ @author_info.merge!(iParams)
78
78
 
79
79
  return self
80
80
  end
81
81
 
82
82
  # Add Project properties
83
83
  #
84
- # Parameters:
84
+ # Parameters::
85
85
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
86
- # ** *:Name* (_String_): Project name
87
- # ** *:WebPageURL* (_String_): Project home page
88
- # ** *:Summary* (_String_): Project Summary
89
- # ** *:Description* (_String_): Project description
90
- # ** *:ImageURL* (_String_): URL of the project's image
91
- # ** *:FaviconURL* (_String_): URL of the project's favicon
92
- # ** *:SVNBrowseURL* (_String_): URL of the SVN browse
93
- # ** *:DevStatus* (_String_): Development status
94
- # Return:
86
+ # * *:name* (_String_): Project name
87
+ # * *:web_page_url* (_String_): Project home page
88
+ # * *:summary* (_String_): Project Summary
89
+ # * *:description* (_String_): Project description
90
+ # * *:image_url* (_String_): URL of the project's image
91
+ # * *:favicon_url* (_String_): URL of the project's favicon
92
+ # * *:browse_source_url* (_String_): URL to browse the source code
93
+ # * *:dev_status* (_String_): Development status
94
+ # Return::
95
95
  # * _ReleaseInfo_: self
96
96
  def project(iParams)
97
- @ProjectInfo.merge!(iParams)
97
+ @project_info.merge!(iParams)
98
98
 
99
99
  return self
100
100
  end
@@ -102,114 +102,116 @@ module RubyPackager
102
102
  # Add executable package properties.
103
103
  # This method can be called several times to specify several executables.
104
104
  #
105
- # Parameters:
105
+ # Parameters::
106
106
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
107
- # ** *:StartupRBFile* (_String_): Name of RB file to execute as startup file.
108
- # ** *:ExeName* (_String_): Name of executable file to produce.
109
- # ** *:IconName* (_String_): Name of the executable icon.
110
- # ** *:TerminalApplication* (_Boolean_): Does this binary execute in a terminal ?
111
- # Return:
107
+ # * *:startup_rb_file* (_String_): Name of RB file to execute as startup file.
108
+ # * *:exe_name* (_String_): Name of executable file to produce.
109
+ # * *:icon_name* (_String_): Name of the executable icon.
110
+ # * *:terminal_application* (_Boolean_): Does this binary execute in a terminal ?
111
+ # Return::
112
112
  # * _ReleaseInfo_: self
113
113
  def executable(iParams)
114
- @ExecutablesInfo << iParams
114
+ @executables_info << iParams
115
115
 
116
116
  return self
117
117
  end
118
118
 
119
119
  # Add installer properties
120
120
  #
121
- # Parameters:
121
+ # Parameters::
122
122
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
123
- # ** *:NSISFileName* (_String_): Name of the NSI file to use to generate the installer
124
- # ** *:InstallerName* (_String_): Name of the generated installer
125
- # Return:
123
+ # * *:nsis_file_name* (_String_): Name of the NSI file to use to generate the installer
124
+ # * *:installer_name* (_String_): Name of the generated installer
125
+ # Return::
126
126
  # * _ReleaseInfo_: self
127
127
  def install(iParams)
128
- @InstallInfo.merge!(iParams)
128
+ @install_info.merge!(iParams)
129
129
 
130
130
  return self
131
131
  end
132
132
 
133
133
  # Add SF.NET properties
134
134
  #
135
- # Parameters:
135
+ # Parameters::
136
136
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
137
- # ** *:Login* (_String_): The releaser's SF.NET login
138
- # ** *:ProjectUnixName* (_String_): Unix name of the SF project
139
- # Return:
137
+ # * *:login* (_String_): The releaser's SF.NET login
138
+ # * *:project_unix_name* (_String_): Unix name of the SF project
139
+ # * *:ask_for_password* (_Boolean_): Do we ask for the user password to give to SSH ?
140
+ # * *:ask_for_key_passphrase* (_Boolean_): Do we ask for the key passphrase to give to SSH ?
141
+ # Return::
140
142
  # * _ReleaseInfo_: self
141
- def sourceForge(iParams)
142
- @SFInfo.merge!(iParams)
143
+ def source_forge(iParams)
144
+ @sf_info.merge!(iParams)
143
145
 
144
146
  return self
145
147
  end
146
148
 
147
149
  # Add RubyForge properties
148
150
  #
149
- # Parameters:
151
+ # Parameters::
150
152
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
151
- # ** *:Login* (_String_): The releaser's RubyForge login
152
- # ** *:ProjectUnixName* (_String_): Unix name of the RubyForge project
153
- # Return:
153
+ # * *:login* (_String_): The releaser's RubyForge login
154
+ # * *:project_unix_name* (_String_): Unix name of the RubyForge project
155
+ # Return::
154
156
  # * _ReleaseInfo_: self
155
- def rubyForge(iParams)
156
- @RFInfo.merge!(iParams)
157
+ def ruby_forge(iParams)
158
+ @rf_info.merge!(iParams)
157
159
 
158
160
  return self
159
161
  end
160
162
 
161
163
  # Add Gem properties
162
164
  #
163
- # Parameters:
165
+ # Parameters::
164
166
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
165
- # ** *:GemName* (_String_): The Gem name
166
- # ** *:GemPlatformClassName* (_String_): The name of the Gem platform class
167
- # ** *:RequirePath* (_String_): Single path to require
168
- # ** *:RequirePaths* (<em>list<String></em>): Paths to require
169
- # ** *:HasRDoc* (_String_): Include RDoc in the Gem ?
170
- # ** *:ExtraRDocFiles* (<em>list<String></em>): List of file patterns to be included in the RDoc but not in the Gem
171
- # ** *:TestFile* (_String_): Name of the test file to execute
172
- # ** *:GemDependencies* (<em>list<[String,String]></em>): List of [ Gem, Version criteria ] this Gem depends on
173
- # Return:
167
+ # * *:gem_name* (_String_): The Gem name
168
+ # * *:gem_platform_class_name* (_String_): The name of the Gem platform class
169
+ # * *:require_path* (_String_): Single path to require
170
+ # * *:require_paths* (<em>list<String></em>): Paths to require
171
+ # * *:has_rdoc* (_String_): Include RDoc in the Gem ?
172
+ # * *:extra_rdoc_files* (<em>list<String></em>): List of file patterns to be included in the RDoc but not in the Gem
173
+ # * *:test_file* (_String_): Name of the test file to execute
174
+ # * *:gem_dependencies* (<em>list< [String,String] ></em>): List of [ Gem, Version criteria ] this Gem depends on
175
+ # Return::
174
176
  # * _ReleaseInfo_: self
175
177
  def gem(iParams)
176
- @GemInfo.merge!(iParams)
178
+ @gem_info.merge!(iParams)
177
179
 
178
180
  return self
179
181
  end
180
182
 
181
183
  # Add core files patterns
182
184
  #
183
- # Parameters:
185
+ # Parameters::
184
186
  # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
185
- # Return:
187
+ # Return::
186
188
  # * _ReleaseInfo_: self
187
- def addCoreFiles(iFilesPatternsList)
188
- @CoreFiles.concat(iFilesPatternsList)
189
+ def add_core_files(iFilesPatternsList)
190
+ @core_files.concat(iFilesPatternsList)
189
191
 
190
192
  return self
191
193
  end
192
194
 
193
195
  # Add additional files patterns
194
196
  #
195
- # Parameters:
197
+ # Parameters::
196
198
  # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
197
- # Return:
199
+ # Return::
198
200
  # * _ReleaseInfo_: self
199
- def addAdditionalFiles(iFilesPatternsList)
200
- @AdditionalFiles.concat(iFilesPatternsList)
201
+ def add_additional_files(iFilesPatternsList)
202
+ @additional_files.concat(iFilesPatternsList)
201
203
 
202
204
  return self
203
205
  end
204
206
 
205
207
  # Add test files patterns
206
208
  #
207
- # Parameters:
209
+ # Parameters::
208
210
  # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
209
- # Return:
211
+ # Return::
210
212
  # * _ReleaseInfo_: self
211
- def addTestFiles(iFilesPatternsList)
212
- @TestFiles.concat(iFilesPatternsList)
213
+ def add_test_files(iFilesPatternsList)
214
+ @test_files.concat(iFilesPatternsList)
213
215
 
214
216
  return self
215
217
  end
@@ -1,5 +1,6 @@
1
+ # coding: utf-8
1
2
  #--
2
- # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
4
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
5
  #++
5
6
 
@@ -14,7 +15,7 @@ module RubyPackager
14
15
 
15
16
  # Copy a list of files patterns to the release directory
16
17
  #
17
- # Parameters:
18
+ # Parameters::
18
19
  # * *iRootDir* (_String_): The root dir
19
20
  # * *iReleaseDir* (_String_): The release dir
20
21
  # * *iFilesPatterns* (<em>list<String></em>): The list of files patterns
@@ -34,9 +35,9 @@ module RubyPackager
34
35
  lDestFileName = "#{iReleaseDir}/#{lRelativeName}"
35
36
  FileUtils::mkdir_p(File.dirname(lDestFileName))
36
37
  if (File.directory?(iFileName))
37
- logDebug "Create directory #{lRelativeName}"
38
+ log_debug "Create directory #{lRelativeName}"
38
39
  else
39
- logDebug "Copy file #{lRelativeName}"
40
+ log_debug "Copy file #{lRelativeName}"
40
41
  FileUtils::cp(iFileName, lDestFileName)
41
42
  end
42
43
  end
@@ -49,7 +50,7 @@ module RubyPackager
49
50
 
50
51
  # Constructor
51
52
  #
52
- # Parameters:
53
+ # Parameters::
53
54
  # * *iPluginsManager* (<em>RUtilAnts::Plugins::PluginsManager</em>): The Plugins manager
54
55
  # * *iReleaseInfo* (_ReleaseInfo_): The release information
55
56
  # * *iRootDir* (_String_): The root directory, containing files to ship in the distribution
@@ -65,7 +66,7 @@ module RubyPackager
65
66
  # * *iDistributors* (<em>list<String></em>): The list of distributors to ship installers to
66
67
  def initialize(iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iGenerateRDoc, iInstallers, iDistributors)
67
68
  @PluginsManager, @ReleaseInfo, @RootDir, @ReleaseBaseDir, @PlatformReleaseInfo, @ReleaseVersion, @ReleaseTags, @ReleaseComment, @IncludeRuby, @IncludeTest, @GenerateRDoc, @Installers, @Distributors = iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iGenerateRDoc, iInstallers, iDistributors
68
- @GemName = "#{@ReleaseInfo.GemInfo[:GemName]}-#{@ReleaseVersion}.gem"
69
+ @GemName = "#{@ReleaseInfo.gem_info[:gem_name]}-#{@ReleaseVersion}.gem"
69
70
  # Compute the release directory name
70
71
  lStrOptions = 'Normal'
71
72
  if (@IncludeRuby)
@@ -77,10 +78,11 @@ module RubyPackager
77
78
  elsif (@IncludeTest)
78
79
  lStrOptions = 'IncludeTest'
79
80
  end
80
- @ReleaseDir = "#{@ReleaseBaseDir}/#{RUBY_PLATFORM}/#{@ReleaseVersion}/#{lStrOptions}/#{Time.now.strftime('%Y_%m_%d_%H_%M_%S')}"
81
- @InstallerDir = "#{@ReleaseDir}/Installer"
82
- @DocDir = "#{@ReleaseDir}/Documentation"
83
- @ReleaseDir += '/Release'
81
+ lBaseReleaseDir = "#{@ReleaseBaseDir}/#{RUBY_PLATFORM}/#{@ReleaseVersion}/#{lStrOptions}/#{Time.now.strftime('%Y_%m_%d_%H_%M_%S')}"
82
+ log_debug "Release to be performed in #{lBaseReleaseDir}"
83
+ @InstallerDir = "#{lBaseReleaseDir}/Installer"
84
+ @DocDir = "#{lBaseReleaseDir}/Documentation"
85
+ @ReleaseDir = "#{lBaseReleaseDir}/Release"
84
86
  require 'fileutils'
85
87
  FileUtils.mkdir_p(@ReleaseDir)
86
88
  FileUtils.mkdir_p(@InstallerDir)
@@ -89,7 +91,7 @@ module RubyPackager
89
91
 
90
92
  # Release
91
93
  #
92
- # Return:
94
+ # Return::
93
95
  # * _Boolean_: Success ?
94
96
  def execute
95
97
  rSuccess = true
@@ -102,24 +104,32 @@ module RubyPackager
102
104
  (!@ReleaseInfo.checkReadyForRelease(@RootDir)))
103
105
  rSuccess = false
104
106
  end
105
- if (!@ReleaseInfo.ExecutablesInfo.empty?)
107
+ if (!@ReleaseInfo.executables_info.empty?)
108
+ # Check first if there will be a need for binary compilation
109
+ lBinaryCompilation = false
110
+ @ReleaseInfo.executables_info.each do |iExecutableInfo|
111
+ if (iExecutableInfo[:exe_name] != nil)
112
+ lBinaryCompilation = true
113
+ break
114
+ end
115
+ end
106
116
  # Check tools for platform dependent considerations
107
- if (!@PlatformReleaseInfo.checkExeTools(@RootDir, @IncludeRuby))
117
+ if (!@PlatformReleaseInfo.check_exe_tools(@RootDir, @IncludeRuby, lBinaryCompilation))
108
118
  rSuccess = false
109
119
  end
110
120
  end
111
121
  @Installers.each do |iInstallerName|
112
- @PluginsManager.accessPlugin('Installers', iInstallerName) do |ioPlugin|
113
- if ((ioPlugin.respond_to?(:checkTools)) and
114
- (!ioPlugin.checkTools))
122
+ @PluginsManager.access_plugin('Installers', iInstallerName) do |ioPlugin|
123
+ if ((ioPlugin.respond_to?(:check_tools)) and
124
+ (!ioPlugin.check_tools))
115
125
  rSuccess = false
116
126
  end
117
127
  end
118
128
  end
119
129
  @Distributors.each do |iDistributorName|
120
- @PluginsManager.accessPlugin('Distributors', iDistributorName) do |ioPlugin|
121
- if ((ioPlugin.respond_to?(:checkTools)) and
122
- (!ioPlugin.checkTools))
130
+ @PluginsManager.access_plugin('Distributors', iDistributorName) do |ioPlugin|
131
+ if ((ioPlugin.respond_to?(:check_tools)) and
132
+ (!ioPlugin.check_tools))
123
133
  rSuccess = false
124
134
  end
125
135
  end
@@ -145,8 +155,8 @@ module RubyPackager
145
155
  lGeneratedInstallers = []
146
156
  @Installers.each do |iInstallerName|
147
157
  logOp("Create installer #{iInstallerName}") do
148
- @PluginsManager.accessPlugin('Installers', iInstallerName) do |ioPlugin|
149
- lFileName = ioPlugin.createInstaller(@RootDir, @ReleaseDir, @InstallerDir, @ReleaseVersion, @ReleaseInfo, @IncludeTest)
158
+ @PluginsManager.access_plugin('Installers', iInstallerName) do |ioPlugin|
159
+ lFileName = ioPlugin.create_installer(@RootDir, @ReleaseDir, @InstallerDir, @ReleaseVersion, @ReleaseInfo, @IncludeTest)
150
160
  if (lFileName == nil)
151
161
  rSuccess = false
152
162
  else
@@ -159,7 +169,7 @@ module RubyPackager
159
169
  # 5. Distribute
160
170
  @Distributors.each do |iDistributorName|
161
171
  logOp("Distribute to #{iDistributorName}") do
162
- @PluginsManager.accessPlugin('Distributors', iDistributorName) do |ioPlugin|
172
+ @PluginsManager.access_plugin('Distributors', iDistributorName) do |ioPlugin|
163
173
  if (!ioPlugin.distribute(@InstallerDir, @ReleaseVersion, @ReleaseInfo, lGeneratedInstallers, @DocDir))
164
174
  rSuccess = false
165
175
  end
@@ -180,24 +190,24 @@ module RubyPackager
180
190
 
181
191
  # Log an operation, and call some code inside
182
192
  #
183
- # Parameters:
193
+ # Parameters::
184
194
  # * *iOperationName* (_String_): Operation name
185
195
  # * *CodeBlock*: Code to call in this operation
186
196
  def logOp(iOperationName)
187
- logDebug "===== #{iOperationName} ..."
197
+ log_debug "===== #{iOperationName} ..."
188
198
  yield
189
- logDebug "===== ... #{iOperationName}"
199
+ log_debug "===== ... #{iOperationName}"
190
200
  end
191
201
 
192
202
  # Release files in a directory, and create the executable if needed
193
203
  #
194
- # Return:
204
+ # Return::
195
205
  # * _Boolean_: Success ?
196
206
  def releaseFiles
197
207
  rSuccess = true
198
208
 
199
209
  logOp('Copy core files') do
200
- RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.CoreFiles)
210
+ RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.core_files)
201
211
  # Create the ReleaseVersion file
202
212
  lStrTags = nil
203
213
  if (@ReleaseTags.empty?)
@@ -212,27 +222,27 @@ module RubyPackager
212
222
  {
213
223
  :Version => '#{@ReleaseVersion}',
214
224
  #{lStrTags},
215
- :DevStatus => '#{@ReleaseInfo.ProjectInfo[:DevStatus]}'
225
+ :dev_status => '#{@ReleaseInfo.project_info[:dev_status]}'
216
226
  }
217
227
  "
218
228
  end
219
229
  end
220
- @ReleaseInfo.ExecutablesInfo.each do |iExecutableInfo|
221
- if (iExecutableInfo[:ExeName] != nil)
222
- logOp("Create binary #{iExecutableInfo[:ExeName]}") do
230
+ @ReleaseInfo.executables_info.each do |iExecutableInfo|
231
+ if (iExecutableInfo[:exe_name] != nil)
232
+ logOp("Create binary #{iExecutableInfo[:exe_name]}") do
223
233
  # TODO (crate): When crate will work correctly under Windows, use it here to pack everything
224
234
  # For now the executable creation is platform dependent
225
- rSuccess = @PlatformReleaseInfo.createBinary(@RootDir, @ReleaseDir, @IncludeRuby, iExecutableInfo)
235
+ rSuccess = @PlatformReleaseInfo.create_binary(@RootDir, @ReleaseDir, @IncludeRuby, iExecutableInfo)
226
236
  end
227
237
  end
228
238
  end
229
239
  if (rSuccess)
230
240
  logOp('Copy additional files') do
231
- RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.AdditionalFiles)
241
+ RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.additional_files)
232
242
  end
233
243
  if (@IncludeTest)
234
244
  logOp('Copy test files') do
235
- RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.TestFiles)
245
+ RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.test_files)
236
246
  end
237
247
  end
238
248
  end
@@ -242,49 +252,57 @@ module RubyPackager
242
252
 
243
253
  # Generate rdoc
244
254
  #
245
- # Return:
255
+ # Return::
246
256
  # * _Boolean_: Success ?
247
257
  def generateRDoc
248
258
  rSuccess = true
249
259
 
250
260
  logOp('Generating RDoc') do
251
- $ProjectInfo = {
252
- :Name => @ReleaseInfo.ProjectInfo[:Name],
261
+ $project_info = {
262
+ :Name => @ReleaseInfo.project_info[:name],
253
263
  :Version => @ReleaseVersion,
254
264
  :Tags => @ReleaseTags,
255
265
  :Date => Time.now,
256
- :DevStatus => @ReleaseInfo.ProjectInfo[:DevStatus],
257
- :Author => @ReleaseInfo.AuthorInfo[:Name],
258
- :AuthorMail => @ReleaseInfo.AuthorInfo[:EMail],
259
- :AuthorURL => @ReleaseInfo.AuthorInfo[:WebPageURL],
260
- :HomepageURL => @ReleaseInfo.ProjectInfo[:WebPageURL],
261
- :ImageURL => @ReleaseInfo.ProjectInfo[:ImageURL],
266
+ :dev_status => @ReleaseInfo.project_info[:dev_status],
267
+ :Author => @ReleaseInfo.author_info[:name],
268
+ :AuthorMail => @ReleaseInfo.author_info[:email],
269
+ :AuthorURL => @ReleaseInfo.author_info[:web_page_url],
270
+ :HomepageURL => @ReleaseInfo.project_info[:web_page_url],
271
+ :image_url => @ReleaseInfo.project_info[:image_url],
262
272
  # TODO: Do not hardcode SF anymore
263
- :DownloadURL => "https://sourceforge.net/projects/#{@ReleaseInfo.SFInfo[:ProjectUnixName]}/files/#{@ReleaseVersion}/#{@GemName}/download",
264
- :SVNBrowseURL => @ReleaseInfo.ProjectInfo[:SVNBrowseURL],
265
- :FaviconURL => @ReleaseInfo.ProjectInfo[:FaviconURL],
273
+ :DownloadURL => "https://sourceforge.net/projects/#{@ReleaseInfo.sf_info[:project_unix_name]}/files/#{@ReleaseVersion}/#{@GemName}/download",
274
+ :browse_source_url => @ReleaseInfo.project_info[:browse_source_url],
275
+ :favicon_url => @ReleaseInfo.project_info[:favicon_url],
266
276
  # For the documentation, the Root dir is the Release dir as files have been copied there and the rdoc will be generated from there.
267
277
  :RootDir => @ReleaseDir
268
278
  }
279
+ # Create the created.rid file as otherwise rdoc will not finish
280
+ FileUtils::mkdir_p("#{@DocDir}/rdoc")
281
+ File.open("#{@DocDir}/rdoc/created.rid", 'w') do |oFile|
282
+ end
269
283
  gem 'rdoc'
270
284
  require 'rdoc/rdoc'
271
285
  lRDocOptions = [
272
286
  '--line-numbers',
273
287
  '--tab-width=2',
274
- "--title=#{@ReleaseInfo.ProjectInfo[:Name].gsub(/'/,'\\\\\'')} v#{@ReleaseVersion}",
275
- '--fileboxes',
288
+ "--title=#{@ReleaseInfo.project_info[:name].gsub(/'/,'\\\\\'')} v#{@ReleaseVersion}",
289
+ '--hyperlink-all',
290
+ '--charset=utf-8',
276
291
  '--exclude=.svn',
292
+ '--exclude=.git',
277
293
  '--exclude=nbproject',
278
294
  '--exclude=Done.txt',
279
- "--exclude=Releases",
295
+ '--exclude=Releases',
296
+ '--force-update',
280
297
  "--output=#{@DocDir}/rdoc"
281
298
  ]
282
299
  # Bug (RDoc): Sometimes it does not change current directory correctly (not deterministic)
283
- changeDir(@ReleaseDir) do
300
+ change_dir(@ReleaseDir) do
284
301
  # First try with Muriel's template
285
302
  begin
286
303
  RDoc::RDoc.new.document( lRDocOptions + [ '--fmt=muriel' ] )
287
304
  rescue Exception
305
+ log_warn "Exception while generating using Muriel's templates: #{$!}: #{$!.backtrace.join("\n")}"
288
306
  # Then try with default template
289
307
  RDoc::RDoc.new.document( lRDocOptions )
290
308
  end
@@ -296,7 +314,7 @@ module RubyPackager
296
314
 
297
315
  # Generate a release note file to attach to this release
298
316
  #
299
- # Return:
317
+ # Return::
300
318
  # * _Boolean_: Success ?
301
319
  def generateReleaseNote_HTML
302
320
  rSuccess = true
@@ -321,7 +339,7 @@ module RubyPackager
321
339
  oFile << "
322
340
  <html>
323
341
  <head>
324
- <link rel=\"shortcut icon\" href=\"#{@ReleaseInfo.ProjectInfo[:FaviconURL]}%>\" />
342
+ <link rel=\"shortcut icon\" href=\"#{@ReleaseInfo.project_info[:favicon_url]}%>\" />
325
343
  <style type=\"text/css\">
326
344
  body {
327
345
  background: #fdfdfd;
@@ -371,21 +389,21 @@ module RubyPackager
371
389
  </style>
372
390
  </head>
373
391
  <body>
374
- <a href=\"#{@ReleaseInfo.ProjectInfo[:WebPageURL]}\"><img src=\"#{@ReleaseInfo.ProjectInfo[:ImageURL]}\" align=\"right\" width=\"100px\"/></a>
375
- <h1>Release Note for #{@ReleaseInfo.ProjectInfo[:Name]} - v. #{@ReleaseVersion}</h1>
376
- <h2>Development status: <span class=\"Important\">#{@ReleaseInfo.ProjectInfo[:DevStatus]}</span></h2>
392
+ <a href=\"#{@ReleaseInfo.project_info[:web_page_url]}\"><img src=\"#{@ReleaseInfo.project_info[:image_url]}\" align=\"right\" width=\"100px\"/></a>
393
+ <h1>Release Note for #{@ReleaseInfo.project_info[:name]} - v. #{@ReleaseVersion}</h1>
394
+ <h2>Development status: <span class=\"Important\">#{@ReleaseInfo.project_info[:dev_status]}</span></h2>
377
395
  #{lStrWhatsNew}
378
396
  <h2>Detailed changes with previous version</h2>
379
397
  #{lLastChangesLines.join}
380
398
  <h2>Useful links</h2>
381
399
  <ul>
382
- <li><a href=\"#{@ReleaseInfo.ProjectInfo[:WebPageURL]}\">Project web site</a></li>
383
- <li><a href=\"https://sourceforge.net/projects/#{@ReleaseInfo.SFInfo[:ProjectUnixName]}/files/#{@ReleaseVersion}/#{@GemName}/download\">Download</a></li>
384
- <li>Author: <a href=\"#{@ReleaseInfo.AuthorInfo[:WebPageURL]}\">#{@ReleaseInfo.AuthorInfo[:Name]}</a> (<a href=\"mailto://#{@ReleaseInfo.AuthorInfo[:EMail]}\">Contact</a>)</li>
385
- <li><a href=\"#{@ReleaseInfo.ProjectInfo[:WebPageURL]}rdoc/#{@ReleaseVersion}\">Browse RDoc</a></li>
386
- <li><a href=\"#{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}\">Browse SVN</a></li>
387
- <li><a href=\"#{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}ChangeLog?view=markup\">View complete ChangeLog</a></li>
388
- <li><a href=\"#{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}README?view=markup\">View README file</a></li>
400
+ <li><a href=\"#{@ReleaseInfo.project_info[:web_page_url]}\">Project web site</a></li>
401
+ <li><a href=\"https://sourceforge.net/projects/#{@ReleaseInfo.sf_info[:project_unix_name]}/files/#{@ReleaseVersion}/#{@GemName}/download\">Download</a></li>
402
+ <li>Author: <a href=\"#{@ReleaseInfo.author_info[:web_page_url]}\">#{@ReleaseInfo.author_info[:name]}</a> (<a href=\"mailto://#{@ReleaseInfo.author_info[:email]}\">Contact</a>)</li>
403
+ <li><a href=\"#{@ReleaseInfo.project_info[:web_page_url]}rdoc/#{@ReleaseVersion}\">Browse RDoc</a></li>
404
+ <li><a href=\"#{@ReleaseInfo.project_info[:browse_source_url]}\">Browse source</a></li>
405
+ <li><a href=\"#{@ReleaseInfo.project_info[:browse_source_url]}ChangeLog?view=markup\">View complete ChangeLog</a></li>
406
+ <li><a href=\"#{@ReleaseInfo.project_info[:browse_source_url]}README?view=markup\">View README file</a></li>
389
407
  </ul>
390
408
  </body>
391
409
  </html>
@@ -398,7 +416,7 @@ module RubyPackager
398
416
 
399
417
  # Generate a release note file to attach to this release
400
418
  #
401
- # Return:
419
+ # Return::
402
420
  # * _Boolean_: Success ?
403
421
  def generateReleaseNote_TXT
404
422
  rSuccess = true
@@ -415,9 +433,9 @@ module RubyPackager
415
433
  end
416
434
  File.open("#{@DocDir}/ReleaseNote.txt", 'w') do |oFile|
417
435
  oFile << "
418
- = Release Note for #{@ReleaseInfo.ProjectInfo[:Name]} - v. #{@ReleaseVersion}
436
+ = Release Note for #{@ReleaseInfo.project_info[:name]} - v. #{@ReleaseVersion}
419
437
 
420
- == Development status: #{@ReleaseInfo.ProjectInfo[:DevStatus]}
438
+ == Development status: #{@ReleaseInfo.project_info[:dev_status]}
421
439
 
422
440
  #{lStrWhatsNew}
423
441
  == Detailed changes with previous version
@@ -426,13 +444,13 @@ module RubyPackager
426
444
 
427
445
  == Useful links
428
446
 
429
- * Project web site: #{@ReleaseInfo.ProjectInfo[:WebPageURL]}
430
- * Download: https://sourceforge.net/projects/#{@ReleaseInfo.ProjectInfo[:ProjectUnixName]}/files/#{@ReleaseVersion}/#{@GemName}/download
431
- * Author: #{@ReleaseInfo.AuthorInfo[:Name]} (#{@ReleaseInfo.AuthorInfo[:WebPageURL]}) (Mail: #{@ReleaseInfo.AuthorInfo[:EMail]})
432
- * Browse RDoc: #{@ReleaseInfo.ProjectInfo[:WebPageURL]}rdoc/#{@ReleaseVersion}
433
- * Browse SVN: #{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}
434
- * View complete ChangeLog: #{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}ChangeLog?view=markup
435
- * View README file: #{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}README?view=markup
447
+ * Project web site: #{@ReleaseInfo.project_info[:web_page_url]}
448
+ * Download: https://sourceforge.net/projects/#{@ReleaseInfo.project_info[:project_unix_name]}/files/#{@ReleaseVersion}/#{@GemName}/download
449
+ * Author: #{@ReleaseInfo.author_info[:name]} (#{@ReleaseInfo.author_info[:web_page_url]}) (Mail: #{@ReleaseInfo.author_info[:email]})
450
+ * Browse RDoc: #{@ReleaseInfo.project_info[:web_page_url]}rdoc/#{@ReleaseVersion}
451
+ * Browse source: #{@ReleaseInfo.project_info[:browse_source_url]}
452
+ * View complete ChangeLog: #{@ReleaseInfo.project_info[:browse_source_url]}ChangeLog?view=markup
453
+ * View README file: #{@ReleaseInfo.project_info[:browse_source_url]}README?view=markup
436
454
  "
437
455
  end
438
456
  end
@@ -442,7 +460,7 @@ module RubyPackager
442
460
 
443
461
  # Get the last change log
444
462
  #
445
- # Return:
463
+ # Return::
446
464
  # * <em>list<String></em>: The change log lines
447
465
  def getLastChangeLog
448
466
  rLastChangesLines = []