module Anvil::Task::Naming

Methods for inferring task class names from cli arguments

Public Instance Methods

description(str = nil) click to toggle source
# File lib/anvil/task/naming.rb, line 27
def description(str = nil)
  return @description unless str
  @description = str
end
from_name(task_name) click to toggle source

Returns a ruby class from a CLI name

@param task_name [String] the CLI name for a task e.g. anvil:build @return [Class] an {Anvil::Task} descendant

# File lib/anvil/task/naming.rb, line 15
def from_name(task_name)
  namespaced_task     = get_namespace task_name
  camelized_task      = "#{namespaced_task.pop}_task".camelize
  camelized_namespace = "#{namespaced_task.shift}".camelize

  "#{camelized_namespace}::#{camelized_task}".constantize
end
get_namespace(task_name) click to toggle source
# File lib/anvil/task/naming.rb, line 7
def get_namespace(task_name)
  task_name.to_s.split ':'
end
task_name() click to toggle source
# File lib/anvil/task/naming.rb, line 23
def task_name
  name[/(.*)Task/, 1].underscore.gsub('/', ':')
end