def usage
      if @commands.empty?
        @output.write 'No commands are available.'
        return
      end

      @output.write <<-USAGE
Usage: #{@name} <command> [<parameter> [...]] [<body>]

Help topics, type "#{@name} help <topic>" for more details:

USAGE

      name_width = @commands.keys.max_by { |key| key.size }.size
      @commands.sort.each do |name, command|
        name = name.ljust(name_width)
        description = command.description
        @output.puts("  #{name}    #{description}")
      end
    end
def usage
      if @commands.empty?
        @output.write 'No commands are available.'
        return
      end

      @output.write <<-USAGE
Usage: #{@name} <command> [<parameter> [...]] [<body>]

Help topics, type "#{@name} help <topic>" for more details:

USAGE

      name_width = @commands.keys.max_by { |key| key.size }.size
      @commands.sort.each do |name, command|
        name = name.ljust(name_width)
        description = command.description
        @output.puts("  #{name}    #{description}")
      end
    end
Write usage information to the output stream.