Class: MRubyPortable::Build

Inherits:
Object
  • Object
show all
Defined in:
lib/mruby_portable/build.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_dir:, mode: "release", out_dir: nil, runner: Runner.new) ⇒ Build

Returns a new instance of Build.

Raises:



10
11
12
13
14
15
16
17
# File 'lib/mruby_portable/build.rb', line 10

def initialize(project_dir:, mode: "release", out_dir: nil, runner: Runner.new)
  @project_dir = File.expand_path(project_dir)
  @mode = mode.to_s
  @out_dir = out_dir
  @runner = runner
  @docker = Docker.new(runner: runner)
  raise Error, "mode must be dev or release" unless %w[dev release].include?(@mode)
end

Instance Attribute Details

#dockerObject (readonly)

Returns the value of attribute docker.



8
9
10
# File 'lib/mruby_portable/build.rb', line 8

def docker
  @docker
end

#modeObject (readonly)

Returns the value of attribute mode.



8
9
10
# File 'lib/mruby_portable/build.rb', line 8

def mode
  @mode
end

#out_dirObject (readonly)

Returns the value of attribute out_dir.



8
9
10
# File 'lib/mruby_portable/build.rb', line 8

def out_dir
  @out_dir
end

#project_dirObject (readonly)

Returns the value of attribute project_dir.



8
9
10
# File 'lib/mruby_portable/build.rb', line 8

def project_dir
  @project_dir
end

#runnerObject (readonly)

Returns the value of attribute runner.



8
9
10
# File 'lib/mruby_portable/build.rb', line 8

def runner
  @runner
end

Instance Method Details

#callObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/mruby_portable/build.rb', line 19

def call
  config = Config.load(project_dir)
  docker.ensure_image!

  Dir.mktmpdir("mruby-portable-build") do |workspace|
    BuildWorkspace.new(config, mode: mode, workspace: workspace).prepare
    docker.run_build(workspace)
    copy_output(config, workspace)
  end
end