class Dry::CLI::CommandRegistry
Command
registry
@since 0.1.0 @api private
Public Class Methods
new()
click to toggle source
@since 0.1.0 @api private
# File lib/dry/cli/command_registry.rb, line 14 def initialize @_mutex = Mutex.new @root = Node.new end
Public Instance Methods
get(arguments)
click to toggle source
@since 0.1.0 @api private
# File lib/dry/cli/command_registry.rb, line 41 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..-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
set(name, command, aliases)
click to toggle source
@since 0.1.0 @api private
# File lib/dry/cli/command_registry.rb, line 21 def set(name, command, aliases) @_mutex.synchronize do node = @root name.split(/[[:space:]]/).each do |token| node = node.put(node, token) end node.aliases!(aliases) if command node.leaf!(command) node.subcommands!(command) end nil end end