Class: Gem::Commands::RdocCommand

Inherits:
Gem::Command show all
Includes:
VersionOption
Defined in:
lib/rubygems/commands/rdoc_command.rb

Instance Attribute Summary

Attributes inherited from Gem::Command

#command, #defaults, #options, #program_name, #summary

Instance Method Summary collapse

Methods included from VersionOption

#add_platform_option, #add_prerelease_option, #add_version_option

Methods inherited from Gem::Command

add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #begins?, build_args, build_args=, #check_deprecated_options, common_options, #deprecate_option, extra_args, extra_args=, #get_all_gem_names, #get_all_gem_names_and_versions, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #invoke_with_build_args, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #when_invoked

Methods included from UserInteraction

#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction, #verbose

Methods included from DefaultUserInteraction

ui, #ui, ui=, #ui=, use_ui, #use_ui

Methods included from Text

#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text

Constructor Details

#initializeRdocCommand

Returns a new instance of RdocCommand.

[View source]

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rubygems/commands/rdoc_command.rb', line 11

def initialize
  super 'rdoc', 'Generates RDoc for pre-installed gems',
        :version => Gem::Requirement.default,
        :include_rdoc => false, :include_ri => true, :overwrite => false

  add_option('--all',
             'Generate RDoc/RI documentation for all',
             'installed gems') do |value, options|
    options[:all] = value
  end

  add_option('--[no-]rdoc',
             'Generate RDoc HTML') do |value, options|
    options[:include_rdoc] = value
  end

  add_option('--[no-]ri',
             'Generate RI data') do |value, options|
    options[:include_ri] = value
  end

  add_option('--[no-]overwrite',
             'Overwrite installed documents') do |value, options|
    options[:overwrite] = value
  end

  add_version_option
end

Instance Method Details

#argumentsObject

:nodoc:

[View source]

40
41
42
# File 'lib/rubygems/commands/rdoc_command.rb', line 40

def arguments # :nodoc:
  "GEMNAME       gem to generate documentation for (unless --all)"
end

#defaults_strObject

:nodoc:

[View source]

44
45
46
# File 'lib/rubygems/commands/rdoc_command.rb', line 44

def defaults_str # :nodoc:
  "--version '#{Gem::Requirement.default}' --ri --no-overwrite"
end

#descriptionObject

:nodoc:

[View source]

48
49
50
51
52
53
54
55
56
57
# File 'lib/rubygems/commands/rdoc_command.rb', line 48

def description # :nodoc:
  <<-DESC
The rdoc command builds documentation for installed gems.  By default
only documentation is built using rdoc, but additional types of
documentation may be built through rubygems plugins and the
Gem.post_installs hook.

Use --overwrite to force rebuilding of documentation.
  DESC
end

#executeObject

[View source]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/rubygems/commands/rdoc_command.rb', line 63

def execute
  specs = if options[:all]
            Gem::Specification.to_a
          else
            get_all_gem_names.map do |name|
              Gem::Specification.find_by_name name, options[:version]
            end.flatten.uniq
          end

  if specs.empty?
    alert_error 'No matching gems found'
    terminate_interaction 1
  end

  specs.each do |spec|
    doc = Gem::RDoc.new spec, options[:include_rdoc], options[:include_ri]

    doc.force = options[:overwrite]

    if options[:overwrite]
      FileUtils.rm_rf File.join(spec.doc_dir, 'ri')
      FileUtils.rm_rf File.join(spec.doc_dir, 'rdoc')
    end

    begin
      doc.generate
    rescue Errno::ENOENT => e
      e.message =~ / - /
      alert_error "Unable to document #{spec.full_name}, #{$'} is missing, skipping"
      terminate_interaction 1 if specs.length == 1
    end
  end
end

#usageObject

:nodoc:

[View source]

59
60
61
# File 'lib/rubygems/commands/rdoc_command.rb', line 59

def usage # :nodoc:
  "#{program_name} [args]"
end