class EacLauncher::Ruby::Gem::Build
Public Class Methods
new(original_gem_root)
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 14 def initialize(original_gem_root) @original_gem_root = original_gem_root end
Public Instance Methods
build()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 28 def build return if builded? copy_gem_files build_gem check_gem_empty_size check_gem_version end
builded?()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 24 def builded? output_file.present? && ::File.exist?(output_file) end
close()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 37 def close ::FileUtils.remove_entry(@gem_root) if @gem_root && ::File.directory?(@gem_root) @gem_root = nil end
output_file()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 18 def output_file return nil unless @gem_root @gem_root.find_files_with_extension('.gem').first end
Private Instance Methods
build_gem()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 49 def build_gem info("Building gemspec #{gemspec_file}...") clear_gems Dir.chdir @gem_root do isolated_build_gem end end
bundle_dependencies()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 96 def bundle_dependencies gemfile = @gem_root.subpath('Gemfile') return unless ::File.exist?(gemfile) Dir.chdir(@gem_root) do EacRubyUtils::Envs.local.command('bundle', 'install').execute! end end
check_gem_empty_size()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 63 def check_gem_empty_size Dir.mktmpdir do |dir| Dir.chdir dir do EacRubyUtils::Envs.local.command('gem', 'unpack', gem).system gs = File.join(dir, File.basename(gem, '.gem')) if (Dir.entries(gs) - %w[. ..]).empty? raise "\"#{dir}\" (Unpacked from #{gem}) has no source code" end end end end
check_gem_version()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 89 def check_gem_version spec = ::EacLauncher::Ruby::Gem::Specification.new(gemspec_file) return if ::File.basename(output_file, '.gem') == spec.full_name raise("Builded gem is not the same version of gemspec (#{spec}, #{output_file})") end
clear_gems()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 75 def clear_gems @gem_root.find_files_with_extension('.gem').each do |f| FileUtils.rm_rf(f) end end
copy_gem_files()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 44 def copy_gem_files @gem_root = ::EacLauncher::Paths::Real.new(::Dir.mktmpdir) FileUtils.cp_r "#{@original_gem_root}/.", @gem_root end
envvars_starting_with(start_with_vars)
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 117 def envvars_starting_with(start_with_vars) ENV.select { |k, _v| start_with_vars.any? { |var| k.start_with?(var) } } end
gem()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 85 def gem @gem_root.find_file_with_extension('.gem') end
gemspec_file()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 81 def gemspec_file @gem_root.find_file_with_extension('.gemspec') end
isolated_build_gem()
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 57 def isolated_build_gem on_clean_ruby do EacRubyUtils::Envs.local.command('gem', 'build', gemspec_file).execute! end end
on_clean_ruby() { || ... }
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 105 def on_clean_ruby on_clear_envvars('BUNDLE', 'RUBY') { yield } end
on_clear_envvars(*start_with_vars) { || ... }
click to toggle source
# File lib/eac_launcher/ruby/gem/build.rb, line 109 def on_clear_envvars(*start_with_vars) old_values = envvars_starting_with(start_with_vars) old_values.each_key { |k| ENV.delete(k) } yield ensure old_values&.each { |k, v| ENV[k] = v } end