class Capistrano::MB::Recipe

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 6
def initialize(name)
  @name = name.to_s
end

Public Instance Methods

during(task_to_extend, *recipe_tasks) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 18
def during(task_to_extend, *recipe_tasks)
  inject_tasks(:after, task_to_extend, *recipe_tasks)
end
enabled?() click to toggle source
# File lib/capistrano/mb/recipe.rb, line 10
def enabled?
  fetch(:mb_recipes, []).map(&:to_s).include?(name)
end
prior_to(task_to_extend, *recipe_tasks) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 14
def prior_to(task_to_extend, *recipe_tasks)
  inject_tasks(:before, task_to_extend, *recipe_tasks)
end

Private Instance Methods

apply_namespace(task_name) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 36
def apply_namespace(task_name)
  return task_name if task_name.include?(":")

  "mb:#{name}:#{task_name}"
end
create_task_unless_exists(task_name, &block) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 42
def create_task_unless_exists(task_name, &block)
  unless Rake::Task.task_defined?(task_name)
    Rake::Task.define_task(task_name, &block)
  end
end
inject_tasks(method, task_to_extend, *recipe_tasks) click to toggle source
# File lib/capistrano/mb/recipe.rb, line 24
def inject_tasks(method, task_to_extend, *recipe_tasks)
  create_task_unless_exists(task_to_extend)

  recipe_tasks.flatten.each do |task|
    qualified_task = apply_namespace(task)
    create_task_unless_exists("#{qualified_task}:if_enabled") do
      invoke qualified_task if enabled?
    end
    send(method, task_to_extend, "#{qualified_task}:if_enabled")
  end
end