module Thor::Util
def self.find_class_and_task_by_namespace(namespace, fallback = true)
namespace
==== Parameters
Thor::Util.namespace_to_thor_class("foo:bar:baz") #=> Foo::Bar, "baz"
Thor::Util.namespace_to_thor_class("baz:foo") #=> Baz::Foo, nil
Thor::Util.namespace_to_thor_class("foo:bar") #=> Foo::Bar, nil # will invoke default task
end
class Baz::Foo < Thor::Group
end
end
def baz
class Foo::Bar < Thor
==== Examples
again. If found, returns the highest entry as the class name.
if it's not found, removes the highest entry and searches for the class
from it. It first searches for a class using the all the given namespace,
Receives a namespace and tries to retrieve a Thor or Thor::Group class
def self.find_class_and_task_by_namespace(namespace, fallback = true) if namespace.include?(?:) # look for a namespaced task pieces = namespace.split(":") task = pieces.pop klass = Thor::Util.find_by_namespace(pieces.join(":")) end unless klass # look for a Thor::Group with the right name klass, task = Thor::Util.find_by_namespace(namespace), nil end if !klass && fallback # try a task in the default namespace task = namespace klass = Thor::Util.find_by_namespace('') end return klass, task end