releasy 0.2.0rc1 → 0.2.0rc2

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 (51) hide show
  1. data/CHANGELOG.md +1 -1
  2. data/README.md +79 -65
  3. data/Rakefile +1 -1
  4. data/lib/releasy/builders.rb +1 -1
  5. data/lib/releasy/builders/builder.rb +6 -4
  6. data/lib/releasy/builders/osx_app.rb +49 -27
  7. data/lib/releasy/builders/source.rb +1 -3
  8. data/lib/releasy/builders/windows_builder.rb +3 -10
  9. data/lib/releasy/builders/windows_folder.rb +4 -6
  10. data/lib/releasy/builders/windows_installer.rb +3 -5
  11. data/lib/releasy/builders/windows_standalone.rb +1 -3
  12. data/lib/releasy/builders/{windows_folder_from_ruby_dist.rb → windows_wrapped.rb} +24 -22
  13. data/lib/releasy/cli/install_sfx.rb +3 -3
  14. data/lib/releasy/deployers.rb +12 -0
  15. data/lib/releasy/deployers/deployer.rb +28 -0
  16. data/lib/releasy/deployers/github.rb +109 -0
  17. data/lib/releasy/mixins/can_exclude_encoding.rb +22 -0
  18. data/lib/releasy/mixins/exec.rb +2 -2
  19. data/lib/releasy/mixins/has_gemspecs.rb +6 -6
  20. data/lib/releasy/mixins/has_packagers.rb +37 -0
  21. data/lib/releasy/mixins/log.rb +39 -0
  22. data/lib/releasy/mixins/register.rb +0 -1
  23. data/lib/releasy/packagers.rb +12 -0
  24. data/lib/releasy/{archivers → packagers}/dmg.rb +4 -4
  25. data/lib/releasy/{archivers → packagers}/exe.rb +4 -4
  26. data/lib/releasy/{archivers/archiver.rb → packagers/packager.rb} +20 -11
  27. data/lib/releasy/packagers/seven_zip.rb +12 -0
  28. data/lib/releasy/{archivers → packagers}/tar_bzip2.rb +4 -4
  29. data/lib/releasy/{archivers → packagers}/tar_gzip.rb +4 -4
  30. data/lib/releasy/{archivers/tar_archiver.rb → packagers/tar_packager.rb} +4 -4
  31. data/lib/releasy/{archivers → packagers}/zip.rb +4 -4
  32. data/lib/releasy/project.rb +105 -46
  33. data/lib/releasy/version.rb +1 -1
  34. data/lib/releasy/windows_wrapper_maker.rb +0 -3
  35. data/releasy.gemspec +1 -0
  36. data/test/releasy/builders/helpers/helper.rb +0 -1
  37. data/test/releasy/builders/osx_app_test.rb +18 -8
  38. data/test/releasy/builders/{windows_folder_from_ruby_dist_test.rb → windows_wrapped_test.rb} +16 -14
  39. data/test/releasy/deployers/github_test.rb +133 -0
  40. data/test/releasy/deployers/helpers/helper.rb +19 -0
  41. data/test/releasy/integration/source_test.rb +25 -6
  42. data/test/releasy/mixins/log_test.rb +15 -0
  43. data/test/releasy/mixins/register_test.rb +0 -1
  44. data/test/releasy/{archivers_test.rb → packagers_test.rb} +16 -19
  45. data/test/releasy/project_test.rb +33 -29
  46. data/test/teststrap.rb +3 -1
  47. data/test/yard_test.rb +1 -1
  48. metadata +55 -34
  49. data/lib/releasy/archivers.rb +0 -12
  50. data/lib/releasy/archivers/seven_zip.rb +0 -12
  51. data/lib/releasy/mixins/has_archivers.rb +0 -37
@@ -10,7 +10,7 @@ v0.2.0
10
10
  * Included gems in osx-app more safely, so that no files will be missing.
11
11
  * Added `:exe` archive format (Windows self-extractor, used on any OS).
12
12
  * Added `:dmg` archive format (OS X self-extractor, used on OS X only).
13
- * Added `:windows_folder_from_ruby_dist` output (windows folder made from a RubyInstaller archive, used on OSX/Linux).
13
+ * Added `:windows_wrapped` output (windows folder made from a RubyInstaller archive, used on OSX/Linux).
14
14
  * Allowed project and outputs to have archive formats (when called on Project, affecting all outputs).
15
15
  * Archive formats can have a different `#extension` set.
16
16
  * Output formats can have a different `#folder_suffix` set.
data/README.md CHANGED
@@ -3,120 +3,126 @@ Releasy
3
3
 
4
4
  _Releasy_ automates the release of Ruby applications (name comes from "Release + easy").
5
5
  By configuring a {Releasy::Project} in your application's rakefile, Releasy can generates a number of Rake tasks for use
6
- when there is a need to release a new version of the application.
6
+ when there is a need to build, archive and/or deploy a new version of the application.
7
7
 
8
- Releasy allows cross-platform releases, relying on pre-made OS X or Windows wrappers to act as templates
9
- (Releasy is able to make the latter type of wrapper itself).
8
+ Releasy allows cross-platform releases, relying on OS X or Windows "wrappers" to act as templates.
10
9
 
11
10
  * Author: [Bil Bas (Spooner)](https://github.com/Spooner)
12
11
  * Licence: [MIT](http://www.opensource.org/licenses/mit-license.php)
13
12
  * [Github project](https://github.com/Spooner/releasy)
14
13
  * [Reporting issues](https://github.com/Spooner/releasy/issues)
15
- * Wrappers used to build cross-platform releases:
16
- - _Windows:_ [RubyInstaller 7-ZIP archives](http://rubyinstaller.org/downloads/); Ruby 1.8.7, 1.9.2 or 1.9.3
17
- - _OS X:_ [libgosu downloads](http://www.libgosu.org/downloads/). Latest version of the OS X-compatible wrapper is "gosu-mac-wrapper-0.7.41.tar.gz" which uses Ruby 1.9.2 and includes some binary gems: Gosu, Chipmunk and TexPlay.
18
- * Tested on Ruby 1.9.3 and 1.8.7 on Windows, Lubuntu and OS X. However, since this is an early version, please ensure that you double-check any releases created by Releasy before publishing them!
14
+ * Relapse has been tested on Ruby 1.9.3 and 1.8.7 on Windows, Lubuntu and OS X. However, since this is an early version, please ensure that you double-check any releases created by Releasy before publishing them!
19
15
 
20
- Output types supported
16
+ Build types supported
21
17
  ----------------------
22
18
 
23
- The project can create one or more release folders:
19
+ The project can build one or more release folders:
24
20
 
25
21
  * `:source` - Plain source folder, which can be used by anyone with Ruby already installed.
26
- * `:osx_app` - OS X application bundle (.app) build, requiring a pre-made Ruby OS X wrapper [Note that this only contains binary gems for Gosu, TexPlay and Chipmunk, but will work with applications using any other source gems].
27
- * `:windows_folder` - A folder containing Ruby, application source files and an EXE to run them [creation on Windows only]
28
- * `:windows_folder_from_ruby_dist` - A folder containing Ruby, application source files and an EXE to run them, requiring a copy of a RubyInstaller archive [creation on OSX/Linux]
29
- * `:windows_installer` - A regular Windows installer [creation on Windows only and requires InnoSetup to be installed]
30
- * `:windows_standalone` - Standalone EXE file that self-extracts to a temporary directory - slower startup than the other Windows options [creation on Windows only]
22
+ * `:osx_app` - OS X application bundle (.app) build, requiring a pre-made Ruby OS X wrapper. Note that this only contains binary gems for Gosu, TexPlay and Chipmunk, but will work with applications using any other source gems.
23
+ * `:windows_folder` - A folder containing Ruby, application source files and an EXE to run them [creation on Windows only].
24
+ * `:windows_wrapped` - A folder containing Ruby, application source files and an EXE to run them, requiring a copy of a RubyInstaller archive [creation on OSX/Linux].
25
+ * `:windows_installer` - A regular Windows installer [creation on Windows only and requires InnoSetup to be installed].
26
+ * `:windows_standalone` - Standalone EXE file that self-extracts to a temporary directory - slower startup than the other Windows options [creation on Windows only].
31
27
 
32
- Archive types supported
28
+ Package types supported
33
29
  -----------------------
34
30
 
35
- Optionally, release folders can be archived using one or more of:
31
+ Optionally, release folders can be packaged into an archive using one or more of:
36
32
 
37
- * `:dmg` - OS X self-extractor (.dmg - requires `hdiutil` to be installed, so only available on OS X)
38
- * `:exe` - Windows self-extractor (.exe - Includes a 7z decompression module, so not efficient for small releases)
39
- * `:"7z"` - 7Zip format (.7z - Best compression)
40
- * `:tar_bz2` - BZip2 tarball (.tar.bz2)
41
- * `:tar_gz` - GZip tarball (.tar.gz)
42
- * `:zip` - Standard zip format (.zip - Poor compression, but best compatibility)
33
+ * `:dmg` - OS X self-extractor (.dmg - requires `hdiutil` to be installed, so only available on OS X).
34
+ * `:exe` - Windows self-extractor (.exe - Includes a 7z decompression module, so not efficient for small releases).
35
+ * `:"7z"` - 7Zip format (.7z - Best compression).
36
+ * `:tar_bz2` - BZip2 tarball (.tar.bz2).
37
+ * `:tar_gz` - GZip tarball (.tar.gz).
38
+ * `:zip` - Standard zip format (.zip - Poor compression, but best compatibility).
39
+
40
+ Deploy types supported
41
+ ----------------------
42
+
43
+ Optionally, packaged releases can be deployed using one or more of:
44
+
45
+ * `:github` - Upload to Github downloads.
46
+ * Others, such as `:dropbox`, when I get around to implementing them.
43
47
 
44
48
  Example
45
49
  -------
46
50
 
47
51
  ### Project's Rakefile
48
52
 
49
- # Example is from my game, Alpha Channel.
50
53
  require 'rubygems'
51
54
  require 'bundler/setup' # Releasy doesn't require that your application uses bundler, but it does make things easier.
52
55
  require 'releasy'
53
- require 'lib/alpha_channel/version'
56
+ require 'lib/my_application/version'
54
57
 
55
58
  #<<<
56
59
  Releasy::Project.new do
57
- name "Alpha Channel"
58
- version AlphaChannel::VERSION
60
+ name "My Application"
61
+ version MyApplication::VERSION
59
62
 
60
- executable "bin/alpha_channel.rbw"
63
+ executable "bin/my_application.rbw"
61
64
  files `git ls-files`.split("\n")
62
65
  files.exclude '.gitignore'
63
66
 
64
67
  exposed_files ["README.html", "LICENSE.txt"]
65
- add_link "http://spooner.github.com/games/alpha_channel", "Alpha Channel website"
68
+ add_link "http://my_application.github.com", "My Application website"
69
+ exclude_encoding
66
70
 
67
71
  # Create a variety of releases, for all platforms.
68
72
  add_build :osx_app do
69
- add_archive :tar_gz
70
- url "com.github.spooner.games.alpha_channel"
73
+ url "com.github.my_application"
71
74
  wrapper "../osx_app/gosu-mac-wrapper-0.7.41.tar.gz"
72
75
  icon "media/icon.icns"
76
+ add_package :tar_gz
73
77
  end
74
78
 
75
- add_build :source
79
+ add_build :source do
80
+ add_package :zip
81
+ end
76
82
 
77
83
  add_build :windows_folder do
78
84
  icon "media/icon.ico"
79
- add_archive :exe
80
- exclude_encoding
85
+ add_package :exe
81
86
  end
82
87
 
83
88
  add_build :windows_installer do
84
89
  icon "media/icon.ico"
85
- exclude_encoding
86
90
  start_menu_group "Spooner Games"
87
91
  readme "README.html" # User asked if they want to view readme after install.
88
92
  license "LICENSE.txt" # User asked to read this and confirm before installing.
93
+ add_package :zip
89
94
  end
90
95
 
91
- add_archive :zip # All outputs given this archive format.
96
+ add_deploy :github # Upload to a github project.
92
97
  end
93
98
  #>>>
94
99
 
95
100
  ### Tasks created
96
101
 
97
102
  Note: The `windows:folder`, `windows:installer` and `windows:standalone` will be created only if running on Windows.
98
- The `windows:folder_from_ruby_dist` task will not be created if running on Windows.
99
-
100
- rake build # Build all outputs
101
- rake build:osx # Build all osx outputs
102
- rake build:osx:app # Build OS X app
103
- rake build:source # Build source folder
104
- rake build:windows # Build all Windows outputs
105
- rake build:windows:folder # Build source/exe folder 1.4.0
106
- rake build:windows:installer # Build installer 1.4.0 [Innosetup]
107
- rake package # Package all
108
- rake package:osx # Package all OS X
109
- rake package:osx:app # Package all :osx_app
110
- rake package:osx:app:tar_gz # Create pkg/alpha_channel_1_4_0_OSX.tar.gz
111
- rake package:osx:app:zip # Create pkg/alpha_channel_1_4_0_OSX.zip
112
- rake package:source # Package all :source
113
- rake package:source:zip # Create pkg/alpha_channel_1_4_0_SOURCE.zip
114
- rake package:windows # Package all Windows outputs
115
- rake package:windows:folder # Package all :windows_folder outputs
116
- rake package:windows:folder:exe # Create pkg/alpha_channel_1_4_0_WIN32.exe
117
- rake package:windows:folder:zip # Create pkg/alpha_channel_1_4_0_WIN32.zip
118
- rake package:windows:installer # Package all :windows_installer
119
- rake package:windows:installer:zip # Create pkg/alpha_channel_1_4_0_WIN32_I...
103
+ The `windows:wrapped` task will not be created if running on Windows.
104
+
105
+ rake build # Build My Application 1.4.0
106
+ rake build:osx # Build all osx
107
+ rake build:osx:app # Build OS X app
108
+ rake build:source # Build source
109
+ rake build:windows # Build all windows
110
+ rake build:windows:folder # Build windows folder
111
+ rake build:windows:installer # Build windows installer
112
+ rake deploy # Deploy My Application 1.4.0
113
+ rake deploy:osx:app:tar_gz:github # github <= osx app .tar.gz
114
+ rake deploy:source:zip:github # github <= source .zip
115
+ rake deploy:windows:folder:exe:github # github <= windows folder .exe
116
+ rake deploy:windows:installer:exe:github # github <= windows installer .zip
117
+ rake generate:images # Generate images
118
+ rake package # Package My Application 1.4.0
119
+ rake package:osx:app:tar_gz # Package osx app .tar.gz
120
+ rake package:source:zip # Package source .zip
121
+ rake package:windows:folder:exe # Package windows folder .exe
122
+ rake package:windows:installer:zip # Package windows installer .zip
123
+
124
+ A variety of unlisted tasks are also created, that allow for more control, such as `deploy:github` (Deploy all packages to Github only),
125
+ `deploy:windows:folder` (deploy all windows folder packages all destinations) or `package:windows` (Package all windows builds).
120
126
 
121
127
  CLI Commands
122
128
  ------------
@@ -126,12 +132,12 @@ Releasy also provides some supplementary commands:
126
132
  * `releasy install-sfx [options]` - Installs a copy of the Windows self-extractor in the local 7z installation, to allow use of the `:exe` archive format (it comes with the Windows version of 7z, so only need to use this command on OS X/Linux).
127
133
 
128
134
 
129
- External Requirements (Optional, but recommended)
130
- --------------------------------
135
+ External Requirements
136
+ ---------------------
131
137
 
132
- ### To create package archives (except `:dmg`)
138
+ ### 7-Zip
133
139
 
134
- [7z](http://www.7-zip.org) must be installed.
140
+ The [7z](http://www.7-zip.org) command must be installed on your system for Releasy to work:
135
141
 
136
142
  - Installing on OS X homebrew:
137
143
 
@@ -143,11 +149,19 @@ External Requirements (Optional, but recommended)
143
149
 
144
150
  - Installing on Windows (or other OS)
145
151
 
146
- * [Download](http://www.7-zip.org/download.html)
152
+ * [Download 7-Zip](http://www.7-zip.org/download.html) - Either the full version or the command line version will work with Releasy.
153
+
154
+ ### To build `:windows_installer` release (Windows only)
155
+
156
+ [InnoSetup](http://www.jrsoftware.org/isdl.php) is used to create an installer for the application.
157
+
158
+ ### To build `:windows_wrapped` release (OS X/Linux)
159
+
160
+ [RubyInstaller 7-ZIP archives](http://rubyinstaller.org/downloads/) for Ruby 1.8.7, 1.9.2 or 1.9.3. Used as a wrapper for a Windows release built on non-Windows systems.
147
161
 
148
- ### To create `:windows_installer` output (Windows only)
162
+ ### To build `:osx_app` application bundle release (any platform)
149
163
 
150
- [InnoSetup](http://www.jrsoftware.org/isdl.php) must be installed.
164
+ [libgosu app wrapper](http://www.libgosu.org/downloads/). Latest version of the OS X-compatible wrapper is "gosu-mac-wrapper-0.7.41.tar.gz" which uses Ruby 1.9.2 and includes some binary gems: Gosu, Chipmunk and TexPlay.
151
165
 
152
166
  Credits
153
167
  -------
@@ -161,5 +175,5 @@ Credits
161
175
  Third Party Assets included
162
176
  ---------------------------
163
177
 
164
- * bin/7z.sfx - Windows [7z 9.20](http://www.7-zip.org) self-extractor module [License: [GNU LGPL](http://www.7-zip.org/license.txt)]
178
+ * bin/7z.sfx - Windows [7z 9.20](http://www.7-zip.org) self-extractor module, which can be installed using `releasy install-sfx` [License: [GNU LGPL](http://www.7-zip.org/license.txt)]
165
179
 
data/Rakefile CHANGED
@@ -17,7 +17,7 @@ task :test do
17
17
  Rake::TestTask.new do |t|
18
18
  t.libs << "test"
19
19
  t.pattern = "test/**/*_test.rb"
20
- t.verbose = false
20
+ t.verbose = true
21
21
  end
22
22
  end
23
23
 
@@ -7,6 +7,6 @@ module Releasy
7
7
  end
8
8
  end
9
9
 
10
- %w[osx_app source windows_folder windows_folder_from_ruby_dist windows_installer windows_standalone].each do |builder|
10
+ %w[osx_app source windows_folder windows_wrapped windows_installer windows_standalone].each do |builder|
11
11
  require "releasy/builders/#{builder}"
12
12
  end
@@ -1,5 +1,6 @@
1
- require "releasy/mixins/has_archivers"
1
+ require "releasy/mixins/has_packagers"
2
2
  require "releasy/mixins/exec"
3
+ require "releasy/mixins/log"
3
4
 
4
5
  module Releasy
5
6
  module Builders
@@ -7,8 +8,9 @@ module Builders
7
8
  # @abstract
8
9
  class Builder
9
10
  include Rake::DSL
10
- include Mixins::HasArchivers
11
+ include Mixins::HasPackagers
11
12
  include Mixins::Exec
13
+ include Mixins::Log
12
14
 
13
15
  # @return [Project] that this Builder belongs to.
14
16
  attr_reader :project
@@ -43,8 +45,8 @@ module Builders
43
45
  def copy_files_relative(files, folder)
44
46
  files.each do |file|
45
47
  destination = File.join(folder, File.dirname(file))
46
- mkdir_p destination unless File.exists? destination
47
- cp file, destination
48
+ mkdir_p destination, fileutils_options unless File.exists? destination
49
+ cp file, destination, fileutils_options
48
50
  end
49
51
  end
50
52
  end
@@ -1,5 +1,6 @@
1
1
  require "releasy/builders/builder"
2
2
  require "releasy/mixins/has_gemspecs"
3
+ require "releasy/mixins/can_exclude_encoding"
3
4
 
4
5
  module Releasy
5
6
  module Builders
@@ -8,6 +9,7 @@ module Releasy
8
9
  # @attr icon [String] Optional filename of icon to show on executable/installer (.icns).
9
10
  class OsxApp < Builder
10
11
  include Mixins::HasGemspecs
12
+ include Mixins::CanExcludeEncoding
11
13
 
12
14
  TYPE = :osx_app
13
15
 
@@ -20,6 +22,11 @@ module Releasy
20
22
  # Source gems included in app that we should remove.
21
23
  SOURCE_GEMS_TO_REMOVE = %w[chingu]
22
24
 
25
+ # Encoding files that are required, even if we don't need most of them if we select to {#exclude_encoding}.
26
+ REQUIRED_ENCODING_FILES = %w[encdb.bundle iso_8859_1.bundle utf_16le.bundle trans/single_byte.bundle trans/transdb.bundle trans/utf_16_32.bundle]
27
+
28
+ VALID_GOSU_WRAPPER = /gosu-mac-wrapper-\d\.\d\.\d+.tar.gz/
29
+
23
30
  Builders.register self
24
31
 
25
32
  # @return [String] Name of .app directory used as the framework for osx app release.
@@ -31,17 +38,16 @@ module Releasy
31
38
  attr_reader :icon
32
39
 
33
40
  def icon=(icon)
34
- raise ConfigError, "icon must be a #{ICON_EXTENSION} file" unless File.extname(icon) == ICON_EXTENSION
41
+ raise ArgumentError, "icon must be a #{ICON_EXTENSION} file" unless File.extname(icon) == ICON_EXTENSION
35
42
  @icon = icon
36
43
  end
37
44
 
38
45
  protected
39
46
  def generate_tasks
40
47
  raise ConfigError, "#url not set" unless url
48
+ raise ConfigError, "#url not valid: #{url}" unless url =~ /\w+(\.\w+)*/i
41
49
  raise ConfigError, "#wrapper not set" unless wrapper
42
- raise ConfigError, "#wrapper not valid wrapper: #{wrapper}" unless File.basename(wrapper) =~ /gosu-mac-wrapper-[\d\.]+.tar.gz/
43
-
44
- new_app = File.join folder, app_name
50
+ raise ConfigError, "#wrapper not valid wrapper: #{wrapper}" unless File.basename(wrapper) =~ VALID_GOSU_WRAPPER
45
51
 
46
52
  directory folder
47
53
 
@@ -49,26 +55,35 @@ module Releasy
49
55
  task "build:osx:app" => folder
50
56
 
51
57
  file folder => project.files + [wrapper] do
52
- Rake::FileUtilsExt.verbose project.verbose?
58
+ build
59
+ end
60
+ end
53
61
 
54
- # Copy the app files.
55
- exec %[7z x -so -bd "#{wrapper}" | 7z x -si -mmt -bd -ttar -o"#{folder}"]
56
- mv File.join(folder, "RubyGosu App.app"), new_app
62
+ protected
63
+ def build
64
+ raise ConfigError, "#wrapper file does not exist: #{wrapper}" unless File.exists? wrapper
57
65
 
58
- ## Copy my source files.
59
- copy_files_relative project.files, File.join(new_app, 'Contents/Resources/application')
66
+ new_app = File.join folder, app_name
60
67
 
61
- # Copy accompanying files.
62
- project.exposed_files.each {|file| cp file, folder }
68
+ # Copy the app files.
69
+ exec %[7z x -so -bd "#{wrapper}" | 7z x -si -mmt -bd -ttar -o"#{folder}"]
70
+ mv File.join(folder, "RubyGosu App.app"), new_app, fileutils_options
63
71
 
64
- copy_gems vendored_gem_names(BINARY_GEMS), File.join(new_app, 'Contents/Resources/vendor')
65
- create_main new_app
66
- edit_init new_app
67
- remove_gems new_app
68
- rename_executable new_app
69
- update_icon new_app
70
- create_executable_setter
71
- end
72
+ ## Copy my source files.
73
+ copy_files_relative project.files, File.join(new_app, 'Contents/Resources/application')
74
+
75
+ remove_encoding if encoding_excluded?
76
+
77
+ # Copy accompanying files.
78
+ project.exposed_files.each {|file| cp file, folder, fileutils_options }
79
+
80
+ copy_gems vendored_gem_names(BINARY_GEMS), File.join(new_app, 'Contents/Resources/vendor')
81
+ create_main new_app
82
+ edit_init new_app
83
+ remove_gems new_app
84
+ rename_executable new_app
85
+ update_icon new_app
86
+ create_executable_setter
72
87
  end
73
88
 
74
89
  protected
@@ -97,33 +112,40 @@ END
97
112
  end
98
113
  end
99
114
 
115
+ protected
116
+ def remove_encoding
117
+ encoding_files = Dir[File.join folder, "#{app_name}/Contents/Resources/lib/enc/**/*.bundle"]
118
+ required_encoding_files = REQUIRED_ENCODING_FILES.map {|f| File.join folder, "#{app_name}/Contents/Resources/lib/enc", f }
119
+ rm_r encoding_files - required_encoding_files, fileutils_options
120
+ end
121
+
100
122
  protected
101
123
  def rename_executable(app)
102
124
  new_executable = "#{app}/Contents/MacOS/#{project.name}"
103
- mv "#{app}/Contents/MacOS/RubyGosu App" , new_executable
104
- chmod 0755, new_executable
125
+ mv "#{app}/Contents/MacOS/RubyGosu App" , new_executable, fileutils_options
126
+ chmod 0755, new_executable, fileutils_options
105
127
  end
106
128
 
107
129
  protected
108
130
  # Remove unnecessary gems from the distribution.
109
131
  def remove_gems(app)
110
132
  SOURCE_GEMS_TO_REMOVE.each do |gem|
111
- rm_r "#{app}/Contents/Resources/lib/#{gem}"
133
+ rm_r "#{app}/Contents/Resources/lib/#{gem}", fileutils_options
112
134
  end
113
135
  end
114
136
 
115
137
  protected
116
138
  def update_icon(app)
117
139
  if icon
118
- rm "#{app}/Contents/Resources/Gosu.icns"
119
- cp icon, "#{app}/Contents/Resources"
140
+ rm "#{app}/Contents/Resources/Gosu.icns", fileutils_options
141
+ cp icon, "#{app}/Contents/Resources", fileutils_options
120
142
  end
121
143
  end
122
144
 
123
145
  protected
124
146
  def create_main(app)
125
147
  # Something for the .app to run -> just a little redirection file.
126
- puts "--- Creating Main.rb" if project.verbose?
148
+ info "Creating Main.rb"
127
149
  File.open("#{app}/Contents/Resources/Main.rb", "w") do |file|
128
150
  file.puts <<END_TEXT
129
151
  Dir[File.expand_path("../vendor/gems/*/lib", __FILE__)].each do |lib|
@@ -146,7 +168,7 @@ END_TEXT
146
168
  def edit_init(app)
147
169
  file = "#{app}/Contents/Info.plist"
148
170
  # Edit the info file to be specific for my game.
149
- puts "--- Editing init" if project.verbose?
171
+ info "Editing init"
150
172
  info = File.read(file)
151
173
  info.sub!('<string>Gosu</string>', "<string>#{File.basename(icon).chomp(File.extname(icon))}</string>") if icon
152
174
  info.sub!('<string>RubyGosu App</string>', "<string>#{project.name}</string>")
@@ -11,14 +11,12 @@ module Releasy
11
11
 
12
12
  protected
13
13
  def generate_tasks
14
- desc "Build source folder"
14
+ desc "Build source"
15
15
  task "build:source" => folder
16
16
 
17
17
  directory folder
18
18
 
19
19
  file folder => project.files do
20
- Rake::FileUtilsExt.verbose project.verbose?
21
-
22
20
  copy_files_relative project.files, folder
23
21
  end
24
22
  end