for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
require "thor/core_ext/hash_with_indifferent_access"
module Carrasco
class CommandBuilder
def from_config(config)
config = Thor::CoreExt::HashWithIndifferentAccess.new(config)
klass = Class.new(Thor)
build_commands(config[:commands] || [], klass)
build_grups(config[:groups] || [], klass)
klass
end
private
def build_commands(commands, klass)
commands.each do |method, options|
command = Command.new(method, options)
command.inject_into_class(klass)
def build_grups(groups, klass)
groups.each do |group_name, options|
Group.new(group_name, options).inject_into_class(klass)