RubyPackager 0.1.0.20091021

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 (26) hide show
  1. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/AUTHORS +3 -0
  2. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/ChangeLog +17 -0
  3. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/Credits +35 -0
  4. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/LICENSE +31 -0
  5. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/README +18 -0
  6. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/ReleaseInfo +8 -0
  7. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/TODO +11 -0
  8. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/Distributors/SourceForge.rb +159 -0
  9. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/Installers/Gem.rb +122 -0
  10. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/ReleaseInfo.rb +227 -0
  11. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/Releaser.rb +447 -0
  12. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/Tools.rb +72 -0
  13. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/i386-mswin32/Installers/NSIS.rb +60 -0
  14. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/i386-mswin32/PlatformReleaser.rb +173 -0
  15. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib/RubyPackager/i386-mswin32/edicon/edicon.exe +0 -0
  16. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/ReleaseInfo.rb +16 -0
  17. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/i386-mswin32/Icon.ico +0 -0
  18. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/i386-mswin32/Installer/Icon.ico +0 -0
  19. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/i386-mswin32/Installer/InstallLicense.txt +31 -0
  20. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/i386-mswin32/Installer/install.nsi +51 -0
  21. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Main.rb +8 -0
  22. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Common.rb +50 -0
  23. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/i386-mswin32/run.rb +19 -0
  24. data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/run.rb +19 -0
  25. data/test/run.rb +19 -0
  26. metadata +87 -0
@@ -0,0 +1,3 @@
1
+ = Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ * 0.0.1.20090819
3
+ * 0.1.0.20091021
@@ -0,0 +1,17 @@
1
+ = RubyPackager Release History
2
+
3
+ == 0.1.0.20091021 (Alpha)
4
+
5
+ * Implemented release of libraries as well.
6
+ * Implemented generation of Installers.
7
+ * Implemented distribution to third parties (SourceForge...).
8
+ * Harmonized the way ReleaseInfo are described (!!! complete change with no compatibility with previous format).
9
+ * Plugins architecture for Installers and Distributors.
10
+ * Removed .rb suffixes in required files (better migration to .so if needed).
11
+ * Removed references to PBS.
12
+ * Bug correction: Dir.glob does not work correctly with '\'.
13
+ * Bug correction: Application specific checks for tools were ignored.
14
+
15
+ == 0.0.1.20090819 (Alpha)
16
+
17
+ * Initial public release.
@@ -0,0 +1,35 @@
1
+ = Projects used by RubyPackager
2
+
3
+ == AllInOneRuby
4
+ * Erik Veenstra <allinoneruby@erikveen.dds.nl>
5
+ * http://rubyforge.org/projects/allinoneruby/
6
+ * Used to release Ruby for platforms missing Ruby
7
+
8
+ == Exerb
9
+ * Yuya Kato <yuyakato@gmail.com>
10
+ * http://exerb.sourceforge.jp/index.en.html
11
+ * Used to create the executable entry point
12
+
13
+ == NSIS
14
+ * kichik@users.sourceforge.net
15
+ * http://nsis.sourceforge.net
16
+ * Used to create the installer for Windows
17
+
18
+ == Ocra
19
+ * Lars Christensen
20
+ * http://rubyforge.org/projects/ocra/
21
+ * Used its edicon utility to change executable icon
22
+
23
+ == Ruby
24
+ * Yukihiro « matz » Matsumoto (http://www.rubyist.net/~matz/)
25
+ * http://www.ruby-lang.org/
26
+ * Used to develop RubyPackager. Thanks a lot Matz for this truly wonderful language !
27
+
28
+ == RubyGems
29
+ * Paul Duncan <pabs@pablotron.org>
30
+ * http://rubygems.org/
31
+ * Used to automatically download Gem dependencies
32
+
33
+ = People that helped a lot in developing RubyPackager
34
+
35
+ * Jeremy Hinegardner <jeremy@hinegardner.org>, for his wonderful project Crate (http://copiousfreetime.rubyforge.org/crate/) that should be the next standard in shipping cross-platform ruby applications
@@ -0,0 +1,31 @@
1
+
2
+ The license stated herein is a copy of the BSD License (modified on July 1999).
3
+ The AUTHOR mentionned below refers to the list of people involved in the
4
+ creation and modification of any file included in the delivered package.
5
+ This list is found in the file named AUTHORS.
6
+ The AUTHORS and LICENSE files have to be included in any release of software
7
+ embedding source code of this package, or using it as a derivative software.
8
+
9
+ Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
10
+
11
+ Redistribution and use in source and binary forms, with or without
12
+ modification, are permitted provided that the following conditions are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright notice,
15
+ this list of conditions and the following disclaimer.
16
+ 2. Redistributions in binary form must reproduce the above copyright notice,
17
+ this list of conditions and the following disclaimer in the documentation
18
+ and/or other materials provided with the distribution.
19
+ 3. The name of the author may not be used to endorse or promote products
20
+ derived from this software without specific prior written permission.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
23
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
25
+ EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
27
+ OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
30
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
31
+ OF SUCH DAMAGE.
@@ -0,0 +1,18 @@
1
+ -- This file is best viewed when processed by rdoc.
2
+ ++
3
+
4
+ = RubyPackager
5
+
6
+ Packaging your Ruby applications on any platform.
7
+
8
+ == Where is the documentation ?
9
+
10
+ Check the website at http://rubypackager.sourceforge.net
11
+
12
+ == Who wrote it ?
13
+
14
+ Check the AUTHORS[link:files/AUTHORS.html] file.
15
+
16
+ == What is the license ?
17
+
18
+ You can find out in the LICENSE[link:files/LICENSE.html] file.
@@ -0,0 +1,8 @@
1
+
2
+ # This file has been generated by RubyPackager during a delivery.
3
+ # More info about RubyPackager: http://rubypackager.sourceforge.net
4
+ {
5
+ :Version => '0.1.0.20091021',
6
+ :Tags => [],
7
+ :DevStatus => 'Alpha'
8
+ }
@@ -0,0 +1,11 @@
1
+ * Documentation
2
+ ** Write a complete User Guide.
3
+ ** Write a complete Developer Guide.
4
+ ** Create FAQ
5
+
6
+ * Testing
7
+ ** More complete regression
8
+
9
+ * Development
10
+ ** Make it run under Linux
11
+ ** Make it run under MacOS
@@ -0,0 +1,159 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ require 'RubyPackager/Tools'
7
+
8
+ module RubyPackager
9
+
10
+ module Distributors
11
+
12
+ class SourceForge
13
+
14
+ include RubyPackager::Tools
15
+
16
+ # Check that we can use this distributor
17
+ #
18
+ # Return:
19
+ # * _Boolean_: Can we use this distributor ?
20
+ def checkTools
21
+ rSuccess = true
22
+
23
+ begin
24
+ require 'net/ssh'
25
+ rescue Exception
26
+ puts '!!! Missing net/ssh library. gem install net-ssh.'
27
+ rSuccess = false
28
+ end
29
+ begin
30
+ require 'net/scp'
31
+ rescue Exception
32
+ puts '!!! Missing net/scp library. gem install net-scp.'
33
+ rSuccess = false
34
+ end
35
+ if (!system('zip -v'))
36
+ puts '!!! Missing zip command-line utility.'
37
+ rSuccess = false
38
+ end
39
+
40
+ return rSuccess
41
+ end
42
+
43
+ # Distribute what has been generated
44
+ #
45
+ # Parameters:
46
+ # * *iInstallerDir* (_String_): Directory where installers are generated
47
+ # * *iReleaseVersion* (_String_): Release version
48
+ # * *iReleaseInfo* (_ReleaseInfo_): Release info
49
+ # * *iGeneratedFileNames* (<em>list<String></em>): List of files to distribute
50
+ # * *iDocDir* (_String_): Directory where the documentation has been generated
51
+ # Return:
52
+ # * _Boolean_: Success ?
53
+ def distribute(iInstallerDir, iReleaseVersion, iReleaseInfo, iGeneratedFileNames, iDocDir)
54
+ rSuccess = true
55
+
56
+ @InstallerDir, @ReleaseVersion, @ReleaseInfo, @GeneratedFileNames, @DocDir = iInstallerDir, iReleaseVersion, iReleaseInfo, iGeneratedFileNames, iDocDir
57
+ @SFProjectSubPath = "#{@ReleaseInfo.SFInfo[:ProjectUnixName][0..0]}/#{@ReleaseInfo.SFInfo[:ProjectUnixName][0..1]}/#{@ReleaseInfo.SFInfo[:ProjectUnixName]}"
58
+ @SFLogin = "#{@ReleaseInfo.SFInfo[:Login]},#{@ReleaseInfo.SFInfo[:ProjectUnixName]}"
59
+ @SFReleaseDir = "/home/frs/project/#{@SFProjectSubPath}/#{@ReleaseVersion}"
60
+ createSFShell
61
+ createReleaseOnSFNET
62
+ uploadRDocOnSFNET
63
+ uploadReleaseNoteOnSFNET
64
+ uploadFilesOnSFNET
65
+
66
+ return rSuccess
67
+ end
68
+
69
+ private
70
+
71
+ # Create a Shell for SF.NET
72
+ def createSFShell
73
+ sshWithPassword(
74
+ 'shell.sourceforge.net',
75
+ @SFLogin,
76
+ 'create'
77
+ )
78
+ end
79
+
80
+ # Shutdown a Shell for SF.NET
81
+ def shutdownSFShell
82
+ sshWithPassword(
83
+ 'shell.sourceforge.net',
84
+ @SFLogin,
85
+ 'shutdown'
86
+ )
87
+ end
88
+
89
+ # Upload the RDoc on SF.NET
90
+ def uploadRDocOnSFNET
91
+ puts 'Uploading RDoc on SF.NET ...'
92
+ # Zip the RDoc
93
+ lOldDir = Dir.getwd
94
+ Dir.chdir(@DocDir)
95
+ system("zip -r rdoc.zip rdoc")
96
+ Dir.chdir(lOldDir)
97
+ # Send it
98
+ lRDocBaseDir = "/home/groups/#{@SFProjectSubPath}/htdocs/rdoc"
99
+ sshWithPassword(
100
+ 'shell.sourceforge.net',
101
+ @SFLogin,
102
+ "mkdir -p #{lRDocBaseDir}"
103
+ )
104
+ scpWithPassword(
105
+ 'shell.sourceforge.net',
106
+ @SFLogin,
107
+ "#{@DocDir}/rdoc.zip",
108
+ "#{lRDocBaseDir}/rdoc-#{@ReleaseVersion}.zip"
109
+ )
110
+ # Execute its uncompress remotely
111
+ sshWithPassword(
112
+ 'shell.sourceforge.net',
113
+ @SFLogin,
114
+ "unzip -o -d #{lRDocBaseDir} #{lRDocBaseDir}/rdoc-#{@ReleaseVersion}.zip ; mv #{lRDocBaseDir}/rdoc #{lRDocBaseDir}/#{@ReleaseVersion} ; rm #{lRDocBaseDir}/latest ; ln -s #{lRDocBaseDir}/#{@ReleaseVersion} #{lRDocBaseDir}/latest ; rm #{lRDocBaseDir}/rdoc-#{@ReleaseVersion}.zip"
115
+ )
116
+ # Remove temporary file
117
+ File.unlink("#{@DocDir}/rdoc.zip")
118
+ end
119
+
120
+ # Create the release on SF.NET
121
+ def createReleaseOnSFNET
122
+ puts 'Creating Release on SF.NET ...'
123
+ sshWithPassword(
124
+ 'shell.sourceforge.net',
125
+ @SFLogin,
126
+ "mkdir -p #{@SFReleaseDir}"
127
+ )
128
+ end
129
+
130
+ # Upload the generated files on SF.NET
131
+ def uploadFilesOnSFNET
132
+ @GeneratedFileNames.each do |iFileName|
133
+ puts "Uploading #{iFileName} on SF.NET ..."
134
+ scpWithPassword(
135
+ 'shell.sourceforge.net',
136
+ @SFLogin,
137
+ "#{@InstallerDir}/#{iFileName}",
138
+ "#{@SFReleaseDir}/#{iFileName}"
139
+ )
140
+ end
141
+ end
142
+
143
+ # Upload the Release note on SF.NET
144
+ def uploadReleaseNoteOnSFNET
145
+ puts 'Uploading Release Note on SF.NET ...'
146
+ scpWithPassword(
147
+ 'shell.sourceforge.net',
148
+ @SFLogin,
149
+ "#{@DocDir}/ReleaseNote.html",
150
+ "#{@SFReleaseDir}/ReleaseNote.html"
151
+ )
152
+ puts '!!! DON\'T FORGET to make association between ReleaseNote and Gem in SF.NET'
153
+ end
154
+
155
+ end
156
+
157
+ end
158
+
159
+ end
@@ -0,0 +1,122 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RubyPackager
7
+
8
+ module Installers
9
+
10
+ class Gem
11
+
12
+ # Check that we can use this installer
13
+ #
14
+ # Return:
15
+ # * _Boolean_: Can we use this installer ?
16
+ def checkTools
17
+ return true
18
+ end
19
+
20
+ # Create the installer with everything in the release directory.
21
+ #
22
+ # Parameters:
23
+ # * *iRootDir* (_String_): The Root directory
24
+ # * *iReleaseDir* (_String_): The release directory (all files to put in the installer are there)
25
+ # * *iInstallerDir* (_String_): The directory where the installer has to be put
26
+ # * *iVersion* (_String_): Release version
27
+ # * *iReleaseInfo* (_ReleaseInfo_): Release info
28
+ # Return:
29
+ # * _String_: File name to distribute, or nil in case of failure
30
+ def createInstaller(iRootDir, iReleaseDir, iInstallerDir, iVersion, iReleaseInfo)
31
+ rFileName = nil
32
+
33
+ # 1. Generate the gemspec that will build the gem
34
+ lStrHasRDoc = nil
35
+ if (iReleaseInfo.GemInfo[:HasRDoc])
36
+ lStrHasRDoc = 'true'
37
+ else
38
+ lStrHasRDoc = 'false'
39
+ end
40
+ lFilesFilter = "#{iReleaseDir}/**/*"
41
+ lStrFiles = "iSpec.files = [ '#{Dir.glob(lFilesFilter).join('\', \'')}' ]"
42
+ lStrExtraRDocFiles = ''
43
+ if ((iReleaseInfo.GemInfo[:ExtraRDocFiles] != nil) and
44
+ (!iReleaseInfo.GemInfo[:ExtraRDocFiles].empty?))
45
+ lStrExtraRDocFiles = "iSpec.extra_rdoc_files = [ '#{@Description[:ExtraRDocFiles].join('\', \'')}' ]"
46
+ RubyPackager::copyFiles(iRootDir, iReleaseDir, iReleaseInfo.GemInfo[:ExtraRDocFiles])
47
+ end
48
+ lGemDepsStrList = []
49
+ if (iReleaseInfo.GemInfo[:GemDependencies] != nil)
50
+ iReleaseInfo.GemInfo[:GemDependencies].each do |iGemDepInfo|
51
+ iGemName, iGemVersion = iGemDepInfo
52
+ if (iGemVersion != nil)
53
+ lGemDepsStrList << "iSpec.add_dependency('#{iGemName}', '#{iGemVersion}')"
54
+ else
55
+ lGemDepsStrList << "iSpec.add_dependency('#{iGemName}')"
56
+ end
57
+ end
58
+ end
59
+ lStrTestFile = ''
60
+ if (iReleaseInfo.GemInfo[:TestFile] != nil)
61
+ lStrTestFile = "iSpec.test_file = '#{iReleaseInfo.GemInfo[:TestFile]}'"
62
+ end
63
+ lStrBinDir = ''
64
+ lStrDefaultExecutable = ''
65
+ if (iReleaseInfo.ExecutableInfo[:StartupRBFile] != nil)
66
+ lStrBinDir = "iSpec.bindir = '#{File.dirname(iReleaseInfo.ExecutableInfo[:StartupRBFile])}'"
67
+ lStrDefaultExecutable = "iSpec.default_executable = '#{File.basename(iReleaseInfo.ExecutableInfo[:StartupRBFile])}'"
68
+ end
69
+ lGemSpecFileName = 'release.gemspec.rb'
70
+ File.open(lGemSpecFileName, 'w') do |oFile|
71
+ oFile << "
72
+ Gem::Specification.new do |iSpec|
73
+ iSpec.name = '#{iReleaseInfo.GemInfo[:GemName]}'
74
+ iSpec.version = '#{iVersion}'
75
+ iSpec.author = '#{iReleaseInfo.AuthorInfo[:Name].gsub(/'/,'\\\\\'')}'
76
+ iSpec.email = '#{iReleaseInfo.AuthorInfo[:EMail]}'
77
+ iSpec.homepage = '#{iReleaseInfo.ProjectInfo[:WebPageURL]}'
78
+ iSpec.platform = #{iReleaseInfo.GemInfo[:GemPlatformClassName]}
79
+ iSpec.summary = '#{iReleaseInfo.ProjectInfo[:Summary].gsub(/'/,'\\\\\'')}'
80
+ iSpec.description = '#{iReleaseInfo.ProjectInfo[:Description].gsub(/'/,'\\\\\'')}'
81
+ #{lStrFiles}
82
+ iSpec.require_path = '#{iReleaseInfo.GemInfo[:RequirePath]}'
83
+ iSpec.has_rdoc = #{lStrHasRDoc}
84
+ #{lStrExtraRDocFiles}
85
+ iSpec.rubyforge_project = '#{iReleaseInfo.RFInfo[:ProjectUnixName]}'
86
+ #{lStrTestFile}
87
+ #{lStrBinDir}
88
+ #{lStrDefaultExecutable}
89
+ #{lGemDepsStrList.join("\n")}
90
+ end
91
+ "
92
+ end
93
+ # 2. Call gem build with this gemspec
94
+ # Load RubyGems
95
+ require 'rubygems/command_manager'
96
+ # Build gem
97
+ lGemOK = true
98
+ begin
99
+ ::Gem::CommandManager.instance.find_command('build').invoke(lGemSpecFileName)
100
+ rescue ::Gem::SystemExitException
101
+ # For RubyGems, this is normal behaviour: success results in an exception thrown with exit_code 0.
102
+ if ($!.exit_code != 0)
103
+ puts "!!! RubyGems returned error #{$!.exit_code}."
104
+ lGemOK = false
105
+ end
106
+ end
107
+ File.unlink(lGemSpecFileName)
108
+ if (lGemOK)
109
+ # Move the Gem to the destination directory
110
+ require 'fileutils'
111
+ rFileName = "#{iReleaseInfo.GemInfo[:GemName]}-#{iVersion}.gem"
112
+ FileUtils::mv(rFileName, "#{iInstallerDir}/#{rFileName}")
113
+ end
114
+
115
+ return rFileName
116
+ end
117
+
118
+ end
119
+
120
+ end
121
+
122
+ end
@@ -0,0 +1,227 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RubyPackager
7
+
8
+ # This class is the base class of all releases info to be provided by packages.
9
+ class ReleaseInfo
10
+
11
+ # Information about the author
12
+ # map< Symbol, Object >
13
+ attr_reader :AuthorInfo
14
+
15
+ # Information about the project
16
+ # map< Symbol, Object >
17
+ attr_reader :ProjectInfo
18
+
19
+ # Information about the executable
20
+ # map< Symbol, Object >
21
+ attr_reader :ExecutableInfo
22
+
23
+ # Information about the installer
24
+ # map< Symbol, Object >
25
+ attr_reader :InstallInfo
26
+
27
+ # Information about SourceForge
28
+ # map< Symbol, Object >
29
+ attr_reader :SFInfo
30
+
31
+ # Information about RubyForge
32
+ # map< Symbol, Object >
33
+ attr_reader :RFInfo
34
+
35
+ # Information about the Gem
36
+ # map< Symbol, Object >
37
+ attr_reader :GemInfo
38
+
39
+ # List of core files patterns
40
+ # list< String >
41
+ attr_reader :CoreFiles
42
+
43
+ # List of additional files patterns
44
+ # list< String >
45
+ attr_reader :AdditionalFiles
46
+
47
+ # List of test files patterns
48
+ # list< String >
49
+ attr_reader :TestFiles
50
+
51
+ # Check if the tools needed for the release are ok
52
+ # This is meant to be overriden if needed
53
+ #
54
+ # Parameters:
55
+ # * *iRootDir* (_String_): Root directory from where the release is happening
56
+ # Return:
57
+ # * _Boolean_: Success ?
58
+ def checkTools(iRootDir)
59
+ return true
60
+ end
61
+
62
+ # Constructor
63
+ def initialize
64
+ # This sets also default values
65
+ @AuthorInfo = {}
66
+ @ProjectInfo = {}
67
+ @ExecutableInfo = {}
68
+ @InstallInfo = {}
69
+ @SFInfo = {}
70
+ @RFInfo = {}
71
+ @GemInfo = {}
72
+ # Files patterns list
73
+ @CoreFiles = []
74
+ @AdditionalFiles = []
75
+ @TestFiles = []
76
+ end
77
+
78
+ # Add Author properties
79
+ #
80
+ # Parameters:
81
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
82
+ # ** *:Name* (_String_): The author name
83
+ # ** *:EMail* (_String_): The author's email
84
+ # ** *:WebPageURL* (_String_): The author's web page
85
+ # Return:
86
+ # * _ReleaseInfo_: self
87
+ def author(iParams)
88
+ @AuthorInfo.merge!(iParams)
89
+
90
+ return self
91
+ end
92
+
93
+ # Add Project properties
94
+ #
95
+ # Parameters:
96
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
97
+ # ** *:Name* (_String_): Project name
98
+ # ** *:WebPageURL* (_String_): Project home page
99
+ # ** *:Summary* (_String_): Project Summary
100
+ # ** *:Description* (_String_): Project description
101
+ # ** *:ImageURL* (_String_): URL of the project's image
102
+ # ** *:FaviconURL* (_String_): URL of the project's favicon
103
+ # ** *:SVNBrowseURL* (_String_): URL of the SVN browse
104
+ # ** *:DevStatus* (_String_): Development status
105
+ # Return:
106
+ # * _ReleaseInfo_: self
107
+ def project(iParams)
108
+ @ProjectInfo.merge!(iParams)
109
+
110
+ return self
111
+ end
112
+
113
+ # Add executable package properties
114
+ #
115
+ # Parameters:
116
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
117
+ # ** *:StartupRBFile* (_String_): Name of RB file to execute as startup file.
118
+ # ** *:ExeName* (_String_): Name of executable file to produce.
119
+ # ** *:IconName* (_String_): Name of the executable icon.
120
+ # ** *:TerminalApplication* (_Boolean_): Does this binary execute in a terminal ?
121
+ # Return:
122
+ # * _ReleaseInfo_: self
123
+ def executable(iParams)
124
+ @ExecutableInfo.merge!(iParams)
125
+
126
+ return self
127
+ end
128
+
129
+ # Add installer properties
130
+ #
131
+ # Parameters:
132
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
133
+ # ** *:NSISFileName* (_String_): Name of the NSI file to use to generate the installer
134
+ # Return:
135
+ # * _ReleaseInfo_: self
136
+ def install(iParams)
137
+ @InstallInfo.merge!(iParams)
138
+
139
+ return self
140
+ end
141
+
142
+ # Add SF.NET properties
143
+ #
144
+ # Parameters:
145
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
146
+ # ** *:Login* (_String_): The releaser's SF.NET login
147
+ # ** *:ProjectUnixName* (_String_): Unix name of the SF project
148
+ # Return:
149
+ # * _ReleaseInfo_: self
150
+ def sourceForge(iParams)
151
+ @SFInfo.merge!(iParams)
152
+
153
+ return self
154
+ end
155
+
156
+ # Add RubyForge properties
157
+ #
158
+ # Parameters:
159
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
160
+ # ** *:Login* (_String_): The releaser's RubyForge login
161
+ # ** *:ProjectUnixName* (_String_): Unix name of the RubyForge project
162
+ # Return:
163
+ # * _ReleaseInfo_: self
164
+ def rubyForge(iParams)
165
+ @RFInfo.merge!(iParams)
166
+
167
+ return self
168
+ end
169
+
170
+ # Add Gem properties
171
+ #
172
+ # Parameters:
173
+ # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
174
+ # ** *:GemName* (_String_): The Gem name
175
+ # ** *:GemPlatformClassName* (_String_): The name of the Gem platform class
176
+ # ** *:RequirePath* (_String_): Path to require
177
+ # ** *:HasRDoc* (_String_): Include RDoc in the Gem ?
178
+ # ** *:ExtraRDocFiles* (<em>list<String></em>): List of file patterns to be included in the RDoc but not in the Gem
179
+ # ** *:TestFile* (_String_): Name of the test file to execute
180
+ # ** *:GemDependencies* (<em>list<[String,String]></em>): List of [ Gem, Version criteria ] this Gem depends on
181
+ # Return:
182
+ # * _ReleaseInfo_: self
183
+ def gem(iParams)
184
+ @GemInfo.merge!(iParams)
185
+
186
+ return self
187
+ end
188
+
189
+ # Add core files patterns
190
+ #
191
+ # Parameters:
192
+ # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
193
+ # Return:
194
+ # * _ReleaseInfo_: self
195
+ def addCoreFiles(iFilesPatternsList)
196
+ @CoreFiles.concat(iFilesPatternsList)
197
+
198
+ return self
199
+ end
200
+
201
+ # Add additional files patterns
202
+ #
203
+ # Parameters:
204
+ # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
205
+ # Return:
206
+ # * _ReleaseInfo_: self
207
+ def addAdditionalFiles(iFilesPatternsList)
208
+ @AdditionalFiles.concat(iFilesPatternsList)
209
+
210
+ return self
211
+ end
212
+
213
+ # Add test files patterns
214
+ #
215
+ # Parameters:
216
+ # * *iFilesPatternsList* (<em>list<String></em>): The list of files patterns to add
217
+ # Return:
218
+ # * _ReleaseInfo_: self
219
+ def addTestFiles(iFilesPatternsList)
220
+ @TestFiles.concat(iFilesPatternsList)
221
+
222
+ return self
223
+ end
224
+
225
+ end
226
+
227
+ end