class Dry::CLI::CommandRegistry
@api private
@since 0.1.0
Command registry
def get(arguments)
- 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
- Api: - private
Other tags:
- Since: - 0.1.0
def initialize @_mutex = Mutex.new @root = Node.new end
def set(name, command, aliases, hidden)
- 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