Sha256: 0f500dd170680111cdd4e89584483f942ad00f6b05064bfa1d8342bb9109c286

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

module Nanoc::CLI

  class HelpCommand < Cri::Command # :nodoc:

    def name
      'help'
    end

    def aliases
      []
    end

    def short_desc
      'show help for a command'
    end

    def long_desc
      'Show help for the given command, or show general help. When no ' +
      'command is given, a list of available commands is displayed, as ' +
      'well as a list of global commandline options. When a command is ' +
      'given, a command description as well as command-specific ' +
      'commandline options are shown.'
    end

    def usage
      "nanoc help [command]"
    end

    def run(options, arguments)
      # Check arguments
      if arguments.size > 1
        $stderr.puts "usage: #{usage}"
        exit 1
      end

      if arguments.length == 0
        # Build help text
        text = ''

        # Add title
        text << "nanoc, a static site compiler written in Ruby.\n"

        # Add available commands
        text << "\n"
        text << "Available commands:\n"
        text << "\n"
        @base.commands.sort.each do |command|
          text << sprintf("    %-20s %s\n", command.name, command.short_desc)
        end

        # Add global options
        text << "\n"
        text << "Global options:\n"
        text << "\n"
        @base.global_option_definitions.sort { |x,y| x[:long] <=> y[:long] }.each do |opt_def|
          text << sprintf("    -%1s --%-15s %s\n", opt_def[:short], opt_def[:long], opt_def[:desc])
        end

        # Display text
        puts text
      elsif arguments.length == 1
        command = @base.command_named(arguments[0])
        puts command.help
      end
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nanoc-2.2 lib/nanoc/cli/commands/help.rb
nanoc-2.2.1 lib/nanoc/cli/commands/help.rb
nanoc-2.2.2 lib/nanoc/cli/commands/help.rb