Class: Kamaze::DockerImage::Loader::Helper
- Inherits:
-
Object
- Object
- Kamaze::DockerImage::Loader::Helper
- Defined in:
- lib/kamaze/docker_image/loader/helper.rb
Overview
Helper for tasks.
Sample of use:
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
Instance Attribute Summary collapse
- #image ⇒ Kamaze::DockerImage protected
Instance Method Summary collapse
-
#appoint(name) ⇒ String
Make task name using namespace (from image).
-
#initialize(image) ⇒ Helper
constructor
A new instance of Helper.
- #namer ⇒ Proc protected
- #on_post(task, args) ⇒ Object protected
- #on_pre(task, args) ⇒ Object protected
-
#task_call(on:, from:, args:) ⇒ Object
protected
Call pre/post tasks.
-
#wrap(task, args = [], &block) ⇒ Object
(also: #call)
Execute related
pre_andpost_tasks.
Constructor Details
#initialize(image) ⇒ Helper
Returns a new instance of Helper.
26 27 28 |
# File 'lib/kamaze/docker_image/loader/helper.rb', line 26 def initialize(image) @image = image end |
Instance Attribute Details
#image ⇒ Kamaze::DockerImage (protected)
64 65 66 |
# File 'lib/kamaze/docker_image/loader/helper.rb', line 64 def image @image end |
Instance Method Details
#appoint(name) ⇒ String
Make task name using namespace (from image)
33 34 35 |
# File 'lib/kamaze/docker_image/loader/helper.rb', line 33 def appoint(name) namer.call(name) end |
#namer ⇒ Proc (protected)
67 68 69 70 71 |
# 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) ⇒ Object (protected)
79 80 81 |
# 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) ⇒ Object (protected)
74 75 76 |
# 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:) ⇒ Object (protected)
Call pre/post tasks.
on: pre/post
from: task as Rake::Task
args: Hash
88 89 90 91 92 93 94 95 96 97 98 |
# 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 |
#wrap(task, args = [], &block) ⇒ Object Also known as: call
Execute related pre_ and post_ tasks
Sample of use:
task 'docker:pre_start' do |task, args|
pp(task, args)
end
task 'docker:post_start' do |task, args|
pp(task, args)
end
53 54 55 56 57 |
# 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 |