releasy 0.2.0rc1
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.
- data/.gitignore +17 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +24 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +20 -0
- data/README.md +165 -0
- data/Rakefile +31 -0
- data/bin/7z.sfx +0 -0
- data/bin/releasy +7 -0
- data/lib/releasy.rb +18 -0
- data/lib/releasy/archivers.rb +12 -0
- data/lib/releasy/archivers/archiver.rb +74 -0
- data/lib/releasy/archivers/dmg.rb +18 -0
- data/lib/releasy/archivers/exe.rb +23 -0
- data/lib/releasy/archivers/seven_zip.rb +12 -0
- data/lib/releasy/archivers/tar_archiver.rb +14 -0
- data/lib/releasy/archivers/tar_bzip2.rb +13 -0
- data/lib/releasy/archivers/tar_gzip.rb +13 -0
- data/lib/releasy/archivers/zip.rb +12 -0
- data/lib/releasy/builders.rb +12 -0
- data/lib/releasy/builders/builder.rb +52 -0
- data/lib/releasy/builders/ocra_builder.rb +43 -0
- data/lib/releasy/builders/osx_app.rb +158 -0
- data/lib/releasy/builders/source.rb +27 -0
- data/lib/releasy/builders/windows_builder.rb +65 -0
- data/lib/releasy/builders/windows_folder.rb +47 -0
- data/lib/releasy/builders/windows_folder_from_ruby_dist.rb +150 -0
- data/lib/releasy/builders/windows_installer.rb +117 -0
- data/lib/releasy/builders/windows_standalone.rb +37 -0
- data/lib/releasy/cli.rb +12 -0
- data/lib/releasy/cli/install_sfx.rb +66 -0
- data/lib/releasy/dsl_wrapper.rb +71 -0
- data/lib/releasy/mixins/exec.rb +14 -0
- data/lib/releasy/mixins/has_archivers.rb +37 -0
- data/lib/releasy/mixins/has_gemspecs.rb +42 -0
- data/lib/releasy/mixins/register.rb +47 -0
- data/lib/releasy/project.rb +300 -0
- data/lib/releasy/version.rb +3 -0
- data/lib/releasy/windows_wrapper_maker.rb +90 -0
- data/lib/releasy/windows_wrapper_maker/Gemfile +8 -0
- data/media/releasy.png +0 -0
- data/releasy.gemspec +37 -0
- data/test/releasy/archivers_test.rb +65 -0
- data/test/releasy/builders/data/Info.plist +51 -0
- data/test/releasy/builders/data/Main.rb +12 -0
- data/test/releasy/builders/data/relapse_runner.rb +1 -0
- data/test/releasy/builders/data/set_app_executable.sh +3 -0
- data/test/releasy/builders/helpers/helper.rb +47 -0
- data/test/releasy/builders/ocra_builder_test.rb +37 -0
- data/test/releasy/builders/osx_app_test.rb +107 -0
- data/test/releasy/builders/source_test.rb +43 -0
- data/test/releasy/builders/windows_builder_test.rb +26 -0
- data/test/releasy/builders/windows_folder_from_ruby_dist_test.rb +105 -0
- data/test/releasy/builders/windows_folder_test.rb +56 -0
- data/test/releasy/builders/windows_installer_test.rb +62 -0
- data/test/releasy/builders/windows_standalone_test.rb +58 -0
- data/test/releasy/cli/install_sfx_test.rb +90 -0
- data/test/releasy/dsl_wrapper_test.rb +79 -0
- data/test/releasy/integration/source_test.rb +122 -0
- data/test/releasy/mixins/register_test.rb +52 -0
- data/test/releasy/project_test.rb +198 -0
- data/test/releasy/windows_wrapper_maker_test.rb +61 -0
- data/test/teststrap.rb +52 -0
- data/test/yard_test.rb +61 -0
- data/test_project/Gemfile +9 -0
- data/test_project/LICENSE.txt +1 -0
- data/test_project/README.txt +2 -0
- data/test_project/bin/test_app +3 -0
- data/test_project/lib/test_app.rb +6 -0
- data/test_project/lib/test_app/stuff.rb +1 -0
- data/test_project/test_app.icns +0 -0
- data/test_project/test_app.ico +0 -0
- data/wrappers/put_wrappers_here_for_testing.txt +17 -0
- metadata +236 -0
data/.gitignore
ADDED
data/.yardopts
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Releasy Change Log
|
2
|
+
==================
|
3
|
+
|
4
|
+
v0.2.0
|
5
|
+
------
|
6
|
+
|
7
|
+
* Name changed from "relapse" to "releasy" because of universal dislike and/or confusion about it :)
|
8
|
+
* Warning: API changed significantly from v0.1.0 because it was dreadful :D
|
9
|
+
* Allowed outputs to be configured separately from the project.
|
10
|
+
* Included gems in osx-app more safely, so that no files will be missing.
|
11
|
+
* Added `:exe` archive format (Windows self-extractor, used on any OS).
|
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).
|
14
|
+
* Allowed project and outputs to have archive formats (when called on Project, affecting all outputs).
|
15
|
+
* Archive formats can have a different `#extension` set.
|
16
|
+
* Output formats can have a different `#folder_suffix` set.
|
17
|
+
* No longer require Innosetup to be installed in order to create `:windows_folder` output.
|
18
|
+
* Added command, 'releasy install-sfx' that installs the self-extractor package for 7z, to enable :exe archiving (non-Windows only).
|
19
|
+
* Lots of other things fixes, refactors and additions, that I lost track of :$
|
20
|
+
|
21
|
+
v0.1.0
|
22
|
+
------
|
23
|
+
|
24
|
+
* First public release as "relapse"
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Bil Bas (Spooner)
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
Releasy
|
2
|
+
=======
|
3
|
+
|
4
|
+
_Releasy_ automates the release of Ruby applications (name comes from "Release + easy").
|
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.
|
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).
|
10
|
+
|
11
|
+
* Author: [Bil Bas (Spooner)](https://github.com/Spooner)
|
12
|
+
* Licence: [MIT](http://www.opensource.org/licenses/mit-license.php)
|
13
|
+
* [Github project](https://github.com/Spooner/releasy)
|
14
|
+
* [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!
|
19
|
+
|
20
|
+
Output types supported
|
21
|
+
----------------------
|
22
|
+
|
23
|
+
The project can create one or more release folders:
|
24
|
+
|
25
|
+
* `: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]
|
31
|
+
|
32
|
+
Archive types supported
|
33
|
+
-----------------------
|
34
|
+
|
35
|
+
Optionally, release folders can be archived using one or more of:
|
36
|
+
|
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)
|
43
|
+
|
44
|
+
Example
|
45
|
+
-------
|
46
|
+
|
47
|
+
### Project's Rakefile
|
48
|
+
|
49
|
+
# Example is from my game, Alpha Channel.
|
50
|
+
require 'rubygems'
|
51
|
+
require 'bundler/setup' # Releasy doesn't require that your application uses bundler, but it does make things easier.
|
52
|
+
require 'releasy'
|
53
|
+
require 'lib/alpha_channel/version'
|
54
|
+
|
55
|
+
#<<<
|
56
|
+
Releasy::Project.new do
|
57
|
+
name "Alpha Channel"
|
58
|
+
version AlphaChannel::VERSION
|
59
|
+
|
60
|
+
executable "bin/alpha_channel.rbw"
|
61
|
+
files `git ls-files`.split("\n")
|
62
|
+
files.exclude '.gitignore'
|
63
|
+
|
64
|
+
exposed_files ["README.html", "LICENSE.txt"]
|
65
|
+
add_link "http://spooner.github.com/games/alpha_channel", "Alpha Channel website"
|
66
|
+
|
67
|
+
# Create a variety of releases, for all platforms.
|
68
|
+
add_build :osx_app do
|
69
|
+
add_archive :tar_gz
|
70
|
+
url "com.github.spooner.games.alpha_channel"
|
71
|
+
wrapper "../osx_app/gosu-mac-wrapper-0.7.41.tar.gz"
|
72
|
+
icon "media/icon.icns"
|
73
|
+
end
|
74
|
+
|
75
|
+
add_build :source
|
76
|
+
|
77
|
+
add_build :windows_folder do
|
78
|
+
icon "media/icon.ico"
|
79
|
+
add_archive :exe
|
80
|
+
exclude_encoding
|
81
|
+
end
|
82
|
+
|
83
|
+
add_build :windows_installer do
|
84
|
+
icon "media/icon.ico"
|
85
|
+
exclude_encoding
|
86
|
+
start_menu_group "Spooner Games"
|
87
|
+
readme "README.html" # User asked if they want to view readme after install.
|
88
|
+
license "LICENSE.txt" # User asked to read this and confirm before installing.
|
89
|
+
end
|
90
|
+
|
91
|
+
add_archive :zip # All outputs given this archive format.
|
92
|
+
end
|
93
|
+
#>>>
|
94
|
+
|
95
|
+
### Tasks created
|
96
|
+
|
97
|
+
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...
|
120
|
+
|
121
|
+
CLI Commands
|
122
|
+
------------
|
123
|
+
|
124
|
+
Releasy also provides some supplementary commands:
|
125
|
+
|
126
|
+
* `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
|
+
|
128
|
+
|
129
|
+
External Requirements (Optional, but recommended)
|
130
|
+
--------------------------------
|
131
|
+
|
132
|
+
### To create package archives (except `:dmg`)
|
133
|
+
|
134
|
+
[7z](http://www.7-zip.org) must be installed.
|
135
|
+
|
136
|
+
- Installing on OS X homebrew:
|
137
|
+
|
138
|
+
<pre>brew install p7zip</pre>
|
139
|
+
|
140
|
+
- Installing on Ubuntu/Debian:
|
141
|
+
|
142
|
+
<pre>sudo apt-get install p7zip-full</pre>
|
143
|
+
|
144
|
+
- Installing on Windows (or other OS)
|
145
|
+
|
146
|
+
* [Download](http://www.7-zip.org/download.html)
|
147
|
+
|
148
|
+
### To create `:windows_installer` output (Windows only)
|
149
|
+
|
150
|
+
[InnoSetup](http://www.jrsoftware.org/isdl.php) must be installed.
|
151
|
+
|
152
|
+
Credits
|
153
|
+
-------
|
154
|
+
|
155
|
+
* Thanks to jlnr for creating "RubyGosu App.app", an OS X application bundle used to wrap application code.
|
156
|
+
* Thanks to larsh for the [Ocra gem](http://ocra.rubyforge.org/), which is used for generating Win32 executables.
|
157
|
+
* Thanks to jlnr and shawn42 for help testing on OS X; without you I would have been screwed!
|
158
|
+
* Thanks to shawn42 and everyone at #gosu and #rubylang for suggestions on how to improve the API.
|
159
|
+
* Thanks to kyrylo for coming up with the name, Releasy!
|
160
|
+
|
161
|
+
Third Party Assets included
|
162
|
+
---------------------------
|
163
|
+
|
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)]
|
165
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup(:development)
|
4
|
+
require 'rake'
|
5
|
+
# Hack to ensure rake testtask/clean will load on Ruby 1.8.x
|
6
|
+
Gem.loaded_specs['rake'].add_self_to_load_path if RUBY_VERSION =~ /^1\.8\.\d+/
|
7
|
+
require 'rake/testtask'
|
8
|
+
require 'rake/clean'
|
9
|
+
require 'yard'
|
10
|
+
|
11
|
+
CLEAN << "test_output" # Created by running tests.
|
12
|
+
|
13
|
+
Bundler::GemHelper.install_tasks
|
14
|
+
|
15
|
+
desc "Run all tests"
|
16
|
+
task :test do
|
17
|
+
Rake::TestTask.new do |t|
|
18
|
+
t.libs << "test"
|
19
|
+
t.pattern = "test/**/*_test.rb"
|
20
|
+
t.verbose = false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
YARD::Rake::YardocTask.new
|
25
|
+
|
26
|
+
desc "Run a yard server to auto-update docs"
|
27
|
+
task :yard_server do
|
28
|
+
system "bundle exec yard server --reload"
|
29
|
+
end
|
30
|
+
|
31
|
+
task :default => :test
|
data/bin/7z.sfx
ADDED
Binary file
|
data/bin/releasy
ADDED
data/lib/releasy.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path("..", __FILE__)
|
4
|
+
|
5
|
+
# Application release manager.
|
6
|
+
module Releasy
|
7
|
+
def self.win_platform?; RUBY_PLATFORM =~ /mingw|win32/; end
|
8
|
+
|
9
|
+
# An error caused when Releasy configuration is incorrect or inconsistent.
|
10
|
+
class ConfigError < StandardError; end
|
11
|
+
|
12
|
+
# Modules used to extend Releasy classes.
|
13
|
+
module Mixins; end
|
14
|
+
end
|
15
|
+
|
16
|
+
require "releasy/version"
|
17
|
+
require "releasy/project"
|
18
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'releasy/mixins/register'
|
2
|
+
|
3
|
+
module Releasy
|
4
|
+
# Contains all {Archiver} types.
|
5
|
+
module Archivers
|
6
|
+
extend Mixins::Register
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
%w[dmg exe seven_zip tar_bzip2 tar_gzip zip].each do |archiver|
|
11
|
+
require "releasy/archivers/#{archiver}"
|
12
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
|
3
|
+
require "releasy/mixins/exec"
|
4
|
+
|
5
|
+
module Releasy
|
6
|
+
module Archivers
|
7
|
+
# Archives a build folder.
|
8
|
+
#
|
9
|
+
# @abstract
|
10
|
+
class Archiver
|
11
|
+
include Rake::DSL
|
12
|
+
include Mixins::Exec
|
13
|
+
|
14
|
+
MD5_READ_SIZE = 128 * 64 # MD5 likes 128 byte chunks.
|
15
|
+
|
16
|
+
# @return [Project] Project this Archiver was created by.
|
17
|
+
attr_reader :project
|
18
|
+
# @return [String] Extension of archive to be created (such as ".zip").
|
19
|
+
attr_accessor :extension
|
20
|
+
|
21
|
+
def type; self.class::TYPE; end
|
22
|
+
|
23
|
+
def initialize(project)
|
24
|
+
@project = project
|
25
|
+
@extension = self.class::DEFAULT_EXTENSION
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
# Generate tasks to create the archive of this file.
|
30
|
+
def generate_tasks(output_task, folder)
|
31
|
+
pkg = package folder
|
32
|
+
|
33
|
+
desc "Create #{pkg}"
|
34
|
+
task "package:#{output_task}:#{type}" => pkg
|
35
|
+
|
36
|
+
file pkg => folder do
|
37
|
+
archive folder
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
def archive(folder)
|
43
|
+
pkg = package folder
|
44
|
+
Rake::FileUtilsExt.verbose project.verbose?
|
45
|
+
|
46
|
+
puts "Creating #{pkg}" if project.verbose?
|
47
|
+
rm pkg if File.exist? pkg
|
48
|
+
cd project.output_path do
|
49
|
+
exec command(File.basename folder)
|
50
|
+
end
|
51
|
+
|
52
|
+
File.open("#{pkg}.MD5", "w") {|f| f.puts checksum(pkg) } if project.send :create_md5s?
|
53
|
+
end
|
54
|
+
|
55
|
+
protected
|
56
|
+
def package(folder); "#{folder}#{extension[0, 1] == '.' ? '' : '.'}#{extension}"; end
|
57
|
+
|
58
|
+
protected
|
59
|
+
def command(folder)
|
60
|
+
%[7z a -mmt -bd -t#{type} -mx9 "#{package(folder)}" "#{folder}"]
|
61
|
+
end
|
62
|
+
|
63
|
+
protected
|
64
|
+
def checksum(filename)
|
65
|
+
digest = Digest::MD5.new
|
66
|
+
File.open(filename, "rb") do |file|
|
67
|
+
digest << file.read(MD5_READ_SIZE) until file.eof?
|
68
|
+
end
|
69
|
+
|
70
|
+
digest.hexdigest
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "releasy/archivers/archiver"
|
2
|
+
|
3
|
+
module Releasy
|
4
|
+
module Archivers
|
5
|
+
# OS X .dmg format (self-extractor).
|
6
|
+
class Dmg < Archiver
|
7
|
+
TYPE = :dmg
|
8
|
+
DEFAULT_EXTENSION = ".dmg"
|
9
|
+
|
10
|
+
Archivers.register self
|
11
|
+
|
12
|
+
protected
|
13
|
+
def command(folder)
|
14
|
+
%[GZIP=-9 hdiutil create -fs HFS+ -srcfolder "#{folder}" -volname "#{project.name} #{project.version}" "#{package(folder)}"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "releasy/archivers/archiver"
|
2
|
+
|
3
|
+
module Releasy
|
4
|
+
module Archivers
|
5
|
+
# Windows self-extracting archive.
|
6
|
+
#
|
7
|
+
# If not on Windows, run "releasy install-sfx" after installing 7z, before you can use this.
|
8
|
+
class Exe < Archiver
|
9
|
+
TYPE = :exe
|
10
|
+
DEFAULT_EXTENSION = ".exe"
|
11
|
+
|
12
|
+
SFX_NAME = "7z.sfx"
|
13
|
+
SFX_FILE = File.expand_path("../../../../bin/#{SFX_NAME}", __FILE__)
|
14
|
+
|
15
|
+
Archivers.register self
|
16
|
+
|
17
|
+
protected
|
18
|
+
def command(folder)
|
19
|
+
%[7z a -mmt -bd -t7z -mx9 -sfx#{SFX_NAME} "#{package(folder)}" "#{folder}"]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|