class Kamaze::DockerImage::Loader::Helper

Helper for tasks.

Sample of use:

“`ruby helper = Kamaze::DockerImage::Loader::Helper.new(image)

desc 'Run a command in a new container'

task helper.appoint(:run), [:command] do |task, args|

helper.call(task, args) { image.run(args[:command]) }

end ““

Attributes

image[RW]

@return [Kamaze::DockerImage]

Public Class Methods

new(image) click to toggle source

@param [Kamaze::DockerImage] image

# File lib/kamaze/docker_image/loader/helper.rb, line 26
def initialize(image)
  @image = image
end

Public Instance Methods

appoint(name) click to toggle source

Make task name using namespace (from image)

@return [String]

# File lib/kamaze/docker_image/loader/helper.rb, line 33
def appoint(name)
  namer.call(name)
end
call(task, args = [], &block)
Alias for: wrap
wrap(task, args = [], &block) click to toggle source

Execute related “pre_“ and “post_“ tasks

@param [Rake::Task] task @param [Hash{Symbol => Object}] args

Sample of use:

“`ruby task 'docker:pre_start' do |task, args|

pp(task, args)

end

task 'docker:post_start' do |task, args|

pp(task, args)

end “`

# File lib/kamaze/docker_image/loader/helper.rb, line 53
def wrap(task, args = [], &block)
  on_pre(task, args)
  block.call
  on_post(task, args)
end
Also aliased as: call

Protected Instance Methods

namer() click to toggle source

@return [Proc]

# File lib/kamaze/docker_image/loader/helper.rb, line 67
def namer
  lambda do |name|
    "#{image.tasks_ns}:#{name}".gsub(/^:/, '')
  end
end
on_post(task, args) click to toggle source

@param [Rake::Task] task

# File lib/kamaze/docker_image/loader/helper.rb, line 79
def on_post(task, args)
  task_call(on: :post, from: task, args: args)
end
on_pre(task, args) click to toggle source

@param [Rake::Task] task

# File lib/kamaze/docker_image/loader/helper.rb, line 74
def on_pre(task, args)
  task_call(on: :pre, from: task, args: args)
end
task_call(on:, from:, args:) click to toggle source

Call pre/post tasks.

on: pre/post from: task as “Rake::Task“ args: Hash

# File lib/kamaze/docker_image/loader/helper.rb, line 88
def task_call(on:, from:, args:)
  cname = from.name.gsub(/^#{image.tasks_ns}:/, '')
  # @formatter:off
  {
    pre: namer.call("pre_#{cname}"),
    post: namer.call("post_#{cname}"),
  }.fetch(on).tap do |name|
    Rake::Task[name].execute(**args.to_h) if Rake::Task.task_defined?(name)
  end
  # @formatter:on
end