module Hanami::CLI::Usage
Command(s) usage
@since 0.1.0 @api private
Constants
- SUBCOMMAND_BANNER
@since 0.1.0 @api private
Public Class Methods
arguments(command)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 47 def self.arguments(command) # rubocop:disable Metrics/AbcSize return unless CLI.command?(command) required_arguments = command.required_arguments optional_arguments = command.optional_arguments required = required_arguments.map { |arg| arg.name.upcase }.join(' ') if required_arguments.any? optional = optional_arguments.map { |arg| "[#{arg.name.upcase}]" }.join(' ') if optional_arguments.any? result = [required, optional].compact " #{result.join(' ')}" unless result.empty? end
call(result, out)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 16 def self.call(result, out) out.puts "Commands:" max_length, commands = commands_and_arguments(result) commands.each do |banner, node| usage = description(node.command) if node.leaf? out.puts "#{justify(banner, max_length, usage)}#{usage}" end end
command_name(result, name)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 84 def self.command_name(result, name) ProgramName.call([result.names, name]) end
commands(result)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 78 def self.commands(result) result.children.sort_by { |name, _| name } end
commands_and_arguments(result)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 28 def self.commands_and_arguments(result) # rubocop:disable Metrics/MethodLength max_length = 0 ret = commands(result).each_with_object({}) do |(name, node), memo| args = if node.leaf? arguments(node.command) else SUBCOMMAND_BANNER end partial = " #{command_name(result, name)}#{args}" max_length = partial.bytesize if max_length < partial.bytesize memo[partial] = node end [max_length, ret] end
description(command)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 62 def self.description(command) return unless CLI.command?(command) " # #{command.description}" unless command.description.nil? end
justify(string, padding, usage)
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/cli/usage.rb, line 70 def self.justify(string, padding, usage) return string.chomp(" ") if usage.nil? string.ljust(padding + padding / 2) end