class Mundler::BuildConfig

Public Class Methods

new(config) click to toggle source
# File lib/mundler/build_config.rb, line 3
def initialize(config)
  @config = config
end

Public Instance Methods

gemboxes() click to toggle source
# File lib/mundler/build_config.rb, line 13
def gemboxes
  @config.gemboxes.map do |gembox|
    "conf.gembox #{gembox.inspect}"
  end.join("\n")
end
gems() click to toggle source
# File lib/mundler/build_config.rb, line 19
def gems
  @config.gems.map do |gem|
    # e.g. gem = {:name=>"mruby-regexp-pcre", :path=>nil, :github=>nil, :core=>nil}
    args = ":mgem => #{gem[:name].inspect}"

    if gem[:github]
      args = ":github => #{gem[:github].inspect}"
    elsif gem[:path]
      args = ":path => #{gem[:path].inspect}"
    elsif gem[:core]
      args = ":core => #{gem[:core].inspect}"
    end

    "conf.gem #{args}"
  end.join("\n  ")
end
mruby_version() click to toggle source
# File lib/mundler/build_config.rb, line 36
def mruby_version
  mruby_url = @config.mruby[:url]

  version = (
    @config.mruby[:tag] ||
    @config.mruby[:branch] ||
    @config.mruby[:version]
  )

  "#{mruby_url} #{version}"
end
tempfile() click to toggle source
# File lib/mundler/build_config.rb, line 7
def tempfile
  tempfile = Tempfile.new("build_config.rb")
  File.write(tempfile, contents)
  tempfile
end

Private Instance Methods

contents() click to toggle source
# File lib/mundler/build_config.rb, line 78
    def contents
      contents = <<~CONTENTS
        # #{mruby_version}
        #{env_vars}

        MRuby::Build.new do |conf|
          toolchain :clang

        #{host_platform}
          #{gemboxes}
          #{gems}
        end

        #{non_host_platforms}
      CONTENTS

      (contents.strip + "\n").gsub("\n\n\n", "\n\n")
    end
env_vars() click to toggle source
# File lib/mundler/build_config.rb, line 70
def env_vars
  str = ""
  @config.env.each do |key, value|
    str = str + "\nENV[\"#{key}\"] = \"#{value}\""
  end
  str
end
host_platform() click to toggle source
# File lib/mundler/build_config.rb, line 50
def host_platform
  @config.platforms
    .select { |attributes| attributes[:name].to_s == "host" }
    .map { |attributes| platform(attributes) }
    .join("\n")
end
non_host_platforms() click to toggle source
# File lib/mundler/build_config.rb, line 57
def non_host_platforms
  @config.platforms
    .select { |attributes| attributes[:name].to_s != "host" }
    .map { |attributes| platform(attributes) }
    .join("\n")
end
platform(attributes) click to toggle source
# File lib/mundler/build_config.rb, line 64
def platform(attributes)
  type = @config.platform_types[attributes[:name].to_s]
  raise "Can't find platform: #{attributes[:name]}" unless type
  type.config(attributes, self)
end