bin/rb2exe in rb2exe-0.3.0 vs bin/rb2exe in rb2exe-0.3.1
- old
+ new
@@ -1,20 +1,19 @@
#!/usr/bin/env ruby
# Usage:
# rb2exe script.rb [OPTIONS]
#
-require_relative "../lib/rb2exe/version.rb"
-require "tmpdir"
+require_relative '../lib/rb2exe/version.rb'
+require 'tmpdir'
require 'optparse'
require 'bundler'
def blank?(arg)
- "#{arg}".strip == ""
+ arg.to_s.strip == ''
end
-
# Arguments
options = {
quiet: false,
add: nil,
ignore_folder: '.git',
@@ -23,74 +22,77 @@
rails: false,
daemon: false,
target: 'l64'
}
opt_parser = OptionParser.new do |opts|
- opts.banner = "Usage: rb2exe RUBY_SCRIPT [options]"
+ opts.banner = 'Usage: rb2exe RUBY_SCRIPT [options]'
opts.version = Rb2exe::VERSION
- opts.on("-q", "--quiet", "Do not run verbosely") { |v| options[:quiet] = v }
- opts.on("-a", "--add=FOLDER", "Add an entire folder (eg. \".\")") { |v| options[:add] = v }
- opts.on("-i", "--ignore-folder=FOLDER", "Do not add a folder") { |v| options[:ignore_folder] = v }
- opts.on("-ao", "--add-output", "Do not ignore output file when adding files") { |v| options[:add_output] = v }
- opts.on("-o", "--output=OUTPUT", "Output executable filename") { |v| options[:output] = v }
- opts.on("-r", "--rails", "Rails support") { |v| options[:rails] = v }
- opts.on("-d", "--daemon", "Runs the app as a background task") { |v| options[:daemon] = v }
- opts.on("-t", "--target=[osx|l32|l64|win]", "Target platform (binary)") { |v| options[:target] = v }
- opts.on("-h","--help", "Help") { puts opt_parser }
+ opts.on('-q', '--quiet', 'Do not run verbosely') { |v| options[:quiet] = v }
+ opts.on('-a', '--add=FOLDER', 'Add an entire folder (eg. ".")') { |v| options[:add] = v }
+ opts.on('-i', '--ignore-folder=FOLDER', 'Do not add a folder') { |v| options[:ignore_folder] = v }
+ opts.on('-ao', '--add-output', 'Do not ignore output file when adding files') { |v| options[:add_output] = v }
+ opts.on('-o', '--output=OUTPUT', 'Output executable filename') { |v| options[:output] = v }
+ opts.on('-r', '--rails', 'Rails support') { |v| options[:rails] = v }
+ opts.on('-d', '--daemon', 'Runs the app as a background task') { |v| options[:daemon] = v }
+ opts.on('-t', '--target=[osx|l32|l64|win]', 'Target platform (binary)') { |v| options[:target] = v }
+ opts.on('-h', '--help', 'Help') do
+ puts opt_parser
+ exit
+ end
end
opt_parser.parse!
# Gem path
-gem_dir = File.expand_path(File.dirname(__FILE__) + "/..")
+gem_dir = File.expand_path(File.dirname(__FILE__) + '/..')
# Main ruby app (filename)
main_app_path = ARGV[0]
-abort("#{opt_parser}") if ! options[:rails] && blank?(main_app_path)
-abort("#{ARGV[0]} doesn't exist.") if ! options[:rails] && ! File.exists?(ARGV[0])
+abort(opt_parser.to_s) if !options[:rails] && blank?(main_app_path)
+abort("#{ARGV[0]} doesn't exist.") if !options[:rails] && !File.exist?(ARGV[0])
# App directory
pwd = Dir.pwd
if options[:rails]
app_dir = File.expand_path('.')
else
if blank?(options[:add])
app_dir = nil
else
app_dir = File.expand_path(options[:add])
- abort "Directory #{app_dir} doesn't exist." if ! Dir.exists?(app_dir)
+ abort "Directory #{app_dir} doesn't exist." unless Dir.exist?(app_dir)
end
end
# Executable filename
# If not specified, uses the main app filename without its extension. Eg.:
# script.rb -> script
if blank?(options[:output]) && options[:rails]
- exe_fn = "output"
+ exe_fn = 'output'
else
exe_fn = blank?(options[:output]) ? File.basename(ARGV[0], File.extname(ARGV[0])) : options[:output]
- abort("Can't use '#{exe_fn}' as a filename (there's a folder with this name).") if Dir.exists?("#{pwd}/#{exe_fn}")
+ abort("Can't use '#{exe_fn}' as a filename (there's a folder with this name).") if Dir.exist?("#{pwd}/#{exe_fn}")
end
# Ruby version should be 2.2.2, 64 bits:
-version = `echo $RUBY_VERSION`.strip
-if version != "ruby-2.2.2"
+version = RUBY_VERSION.strip
+if version != '2.2.2'
abort "Your ruby version should be EXACTLY 2.2.2, not higher, not lower (your is #{version})."
end
# Temporary directory
-result = "Error"
+result = 'Error'
Dir.mktmpdir do |tmp_dir|
FileUtils.mkdir_p("#{tmp_dir}/payload/lib")
# Copy ruby traveler 2.2.2 to "payload/lib/ruby"
ruby_src = case options[:target]
- when "l64" then "#{gem_dir}/bin/traveling-ruby-2.2.2/l64"
- when "l32" then "#{gem_dir}/bin/traveling-ruby-2.2.2/l32"
- when "osx" then "#{gem_dir}/bin/traveling-ruby-2.2.2/osx"
- when "win" then "#{gem_dir}/bin/traveling-ruby-2.2.2/win"
- else abort("Unknow platform (#{options[:target]})")
+ when 'l64' then "#{gem_dir}/bin/traveling-ruby-2.2.2/l64"
+ when 'l32' then "#{gem_dir}/bin/traveling-ruby-2.2.2/l32"
+ when 'osx' then "#{gem_dir}/bin/traveling-ruby-2.2.2/osx"
+ when 'win' then "#{gem_dir}/bin/traveling-ruby-2.2.2/win"
+ else abort("Unknow platform (#{options[:target]})")
end
FileUtils.cp_r(ruby_src, "#{tmp_dir}/payload/lib/ruby")
# Move the "app" folder to "payload/lib"
if app_dir.nil?
@@ -100,25 +102,25 @@
FileUtils.cp_r(app_dir, "#{tmp_dir}/payload/lib/app")
end
FileUtils.cp_r("#{gem_dir}/bin/installer", "#{tmp_dir}/payload/") # Create a wrapper script (name is "installer")
# Gemfile support
- if File.exists?("#{tmp_dir}/payload/lib/app/Gemfile")
- puts "Gemfile detected. Loading gems." unless options[:quiet]
+ if File.exist?("#{tmp_dir}/payload/lib/app/Gemfile")
+ puts 'Gemfile detected. Loading gems.' unless options[:quiet]
FileUtils.mkdir_p("#{tmp_dir}/payload/lib/tmp") # Create a "tmp" folder on ".package/payload/lib"
FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile", "#{tmp_dir}/payload/lib/tmp/") # Copy the project Gemfile to tmp
- FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile.lock", "#{tmp_dir}/payload/lib/tmp/") if File.exists?("#{tmp_dir}/payload/lib/app/Gemfile.lock")
+ FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile.lock", "#{tmp_dir}/payload/lib/tmp/") if File.exist?("#{tmp_dir}/payload/lib/app/Gemfile.lock")
# Download gems into the "lib/vendor" folder
Bundler.with_clean_env do
Dir.chdir("#{tmp_dir}/payload/lib/app") do
`bundle install --path #{tmp_dir}/payload/lib/vendor --without development`
end
end
FileUtils.rm_rf("#{tmp_dir}/payload/lib/tmp/") # Delete tmp folder
- %x[cd #{tmp_dir}/payload/lib/ && rm -f vendor/*/*/cache/*] # Delete gem's cache in the vendor folder
+ `cd #{tmp_dir}/payload/lib/ && rm -f vendor/*/*/cache/*` # Delete gem's cache in the vendor folder
FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile", "#{tmp_dir}/payload/lib/vendor/") # Copy the Gemfile to the vendor folder
- FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile.lock", "#{tmp_dir}/payload/lib/vendor/") if File.exists?("#{tmp_dir}/payload/lib/app/Gemfile.lock")
+ FileUtils.cp("#{tmp_dir}/payload/lib/app/Gemfile.lock", "#{tmp_dir}/payload/lib/vendor/") if File.exist?("#{tmp_dir}/payload/lib/app/Gemfile.lock")
# Create a bundler config
FileUtils.mkdir_p("#{tmp_dir}/payload/lib/vendor/.bundle")
FileUtils.cp("#{gem_dir}/lib/bundler-config", "#{tmp_dir}/payload/lib/vendor/.bundle/config")
end
@@ -127,10 +129,10 @@
puts "Ignoring #{options[:ignore_folder]}" unless options[:quiet]
FileUtils.rm_rf("#{tmp_dir}/payload/lib/app/#{options[:ignore_folder]}")
end
# ignore output file when adding files
- if ! options[:add_output]
+ unless options[:add_output]
puts "Ignoring #{exe_fn}" unless options[:quiet]
FileUtils.rm_rf("#{tmp_dir}/payload/lib/app/#{exe_fn}")
end
FileUtils.cp_r("#{gem_dir}/bin/build", "#{tmp_dir}/") # Package builder