module Kamaze::Project::Concern::Tasks

Concern tasks

Stores tasks to enable and provides method to load them.

Tasks are deignated by a string, preprocessing is applied on this strings before each “task“ is required. Task prefixd by a “@“ character are required without preprocessing, except first char removal.

Public Instance Methods

tasks() click to toggle source

Get tasks

@return [Array<Symbol>]

# File lib/kamaze/project/concern/tasks.rb, line 22
def tasks
  @tasks ||= []

  @tasks.clone.freeze
end
tasks=(tasks) click to toggle source

Set tasks

@param [Array] tasks @return [Array<String>]

# File lib/kamaze/project/concern/tasks.rb, line 32
def tasks=(tasks)
  @tasks = (@tasks.to_a + tasks.to_a).map(&:to_s).map do |tn|
    if tn[0] != '@'
      { ':': '/', '-': '_' }.each do |k, v|
        tn = tn.tr(k.to_s, v)
      end
    end

    tn.to_s
  end.map(&:to_sym).uniq
end

Protected Instance Methods

load_task!(task) click to toggle source

Load task by given name

@param [String] task @return [String]

# File lib/kamaze/project/concern/tasks.rb, line 67
def load_task!(task)
  req = task[0] != '@' ? tasks_ns.join("tasks/#{task}") : task[1..-1]

  require req

  req
end
tasks_load!() click to toggle source

Load tasks

Tasks are loaded only when “Rake::DSL“ is defined. “DSL::Definition“ is loaded during tasks loading.

@see Kamaze::Project::DSL::Definition @return [self]

# File lib/kamaze/project/concern/tasks.rb, line 53
def tasks_load!
  return self unless Kernel.const_defined?('Rake::DSL')

  require tasks_ns.join('dsl/setup').to_s

  tasks.map { |task| load_task!(task) }

  self
end
tasks_ns() click to toggle source

Get namespace for default tasks

@return [Pathname]

# File lib/kamaze/project/concern/tasks.rb, line 78
def tasks_ns
  Pathname.new('kamaze/project')
end