class Dry::CLI::CommandRegistry

@api private
@since 0.1.0
Command registry

def get(arguments)

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def get(arguments)
  @_mutex.synchronize do
    node   = @root
    args   = []
    names  = []
    valid_leaf = nil
    result = LookupResult.new(node, args, names, node.leaf?)
    arguments.each_with_index do |token, i|
      tmp = node.lookup(token)
      if tmp.nil? && valid_leaf
        result = valid_leaf
        break
      elsif tmp.nil?
        result = LookupResult.new(node, args, names, false)
        break
      elsif tmp.leaf?
        args   = arguments[i + 1..]
        names  = arguments[0..i]
        node   = tmp
        result = LookupResult.new(node, args, names, true)
        valid_leaf = result
        break unless tmp.children?
      else
        names  = arguments[0..i]
        node   = tmp
        result = LookupResult.new(node, args, names, node.leaf?)
      end
    end
    result
  end
end

def initialize

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def initialize
  @_mutex = Mutex.new
  @root = Node.new
end

def set(name, command, aliases, hidden)

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def set(name, command, aliases, hidden)
  @_mutex.synchronize do
    node = @root
    name.split(/[[:space:]]/).each do |token|
      node = node.put(node, token)
    end
    node.aliases!(aliases)
    node.hidden!(hidden)
    if command
      node.leaf!(command)
      node.subcommands!(command)
    end
    nil
  end
end