Sha256: c830a28ee073e2d0fd1c8ee35e90744dcc0ae6b34deeab65ec38f2742274f608

Contents?: true

Size: 1.55 KB

Versions: 17

Compression:

Stored size: 1.55 KB

Contents

require "spring/version"

module Spring
  module Client
    class Help < Command
      attr_reader :spring_commands, :application_commands

      def self.description
        "Print available commands."
      end

      def self.call(args)
        require "spring/commands"
        super
      end

      def initialize(args, spring_commands = nil, application_commands = nil)
        super args

        @spring_commands      = spring_commands      || Spring::Client::COMMANDS.dup
        @application_commands = application_commands || Spring.commands.dup

        @spring_commands.delete_if { |k, v| k.start_with?("-") }

        @application_commands["rails"] = @spring_commands.delete("rails")
      end

      def call
        puts formatted_help
      end

      def formatted_help
        ["Version: #{env.version}\n",
         "Usage: spring COMMAND [ARGS]\n",
         *command_help("Spring itself", spring_commands),
         '',
         *command_help("your application", application_commands)].join("\n")
      end

      def command_help(subject, commands)
        ["Commands for #{subject}:\n",
        *commands.sort_by(&:first).map { |name, command| display(name, command) }.compact]
      end

      private

      def all_commands
        spring_commands.merge application_commands
      end

      def display(name, command)
        if command.description
          "  #{name.ljust(max_name_width)}  #{command.description}"
        end
      end

      def max_name_width
        @max_name_width ||= all_commands.keys.map(&:length).max
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 3 rubygems

Version Path
spring-4.2.1 lib/spring/client/help.rb
spring-4.2.0 lib/spring/client/help.rb
spring-4.1.3 lib/spring/client/help.rb
spring-4.1.2 lib/spring/client/help.rb
spring-4.1.1 lib/spring/client/help.rb
spring-4.1.0 lib/spring/client/help.rb
spring-4.0.0 lib/spring/client/help.rb
spring-3.1.1 lib/spring/client/help.rb
spring-3.1.0 lib/spring/client/help.rb
spring-3.0.0 lib/spring/client/help.rb
nrispring-2.1.3 lib/spring/client/help.rb
nrispring-2.1.2 lib/spring/client/help.rb
nrispring-2.1.1 lib/spring/client/help.rb
spring-2.1.1 lib/spring/client/help.rb
chatops-rpc-0.0.2 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/spring-2.1.0/lib/spring/client/help.rb
chatops-rpc-0.0.1 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/spring-2.1.0/lib/spring/client/help.rb
spring-2.1.0 lib/spring/client/help.rb