class Hanami::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/hanami/cli/command_registry.rb, line 13 def initialize @root = Node.new end
Public Instance Methods
get(arguments)
click to toggle source
@since 0.1.0 @api private
rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength
# File lib/hanami/cli/command_registry.rb, line 37 def get(arguments) node = @root args = [] names = [] result = LookupResult.new(node, args, names, node.leaf?) arguments.each_with_index do |token, i| tmp = node.lookup(token) if 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) break else names = arguments[0..i] node = tmp result = LookupResult.new(node, args, names, node.leaf?) end end result end
set(name, command, aliases, **options)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/command_registry.rb, line 19 def set(name, command, aliases, **options) node = @root command = command_for(name, command, **options) name.split(/[[:space:]]/).each do |token| node = node.put(node, token) end node.aliases!(aliases) node.leaf!(command) unless command.nil? nil end
Private Instance Methods
command_for(name, command, **options)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/command_registry.rb, line 71 def command_for(name, command, **options) if command.nil? command else command.new(command_name: name, **options) end end