class Gem2exe::Builder

Public Class Methods

new(path:nil,gem:nil,version:nil,entrypoint:,out:,cores:nil,cache_dir:nil) click to toggle source
# File lib/gem2exe/builder.rb, line 5
def initialize(path:nil,gem:nil,version:nil,entrypoint:,out:,cores:nil,cache_dir:nil)
  @gem = gem
  @version = version

  @path = path

  @entrypoint = entrypoint
  @out = out
  @tmpdir = (cache_dir || Dir.mktmpdir)

  @cores = (cores || self.cores+1)
end

Public Instance Methods

build() click to toggle source
# File lib/gem2exe/builder.rb, line 18
def build
  FileUtils.mkdir_p File.dirname(@out)

  cmd = [Gem2exe.rubyc_path]
  if Gem2exe.platform == "darwin"
    cmd += ["--openssl-dir", "/usr/local/etc/openssl"]
  else
    cmd += ["--openssl-dir", "/etc/ssl"]
  end

  if @path
    cmd += ["--root", @path]
  elsif @gem
    cmd += ["--gem", @gem]
    cmd += ["--gem-version", @version]
  else
    raise "path or gem must be given"
  end

  cmd += ["-o", @out]
  cmd += ["-d", @tmpdir]
  cmd += ["--make-args", "-j#{@cores}"]
  cmd += [@entrypoint]

  Runner.run! cmd, output: true
end

Protected Instance Methods

cores() click to toggle source
# File lib/gem2exe/builder.rb, line 48
def cores
  if Gem2exe.platform == "darwin"
    Integer(`sysctl -n hw.ncpu`)
  else
    Integer(`nproc`)
  end
end