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, #deprecated?, 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, 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.


10
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
# File 'lib/rubygems/commands/rdoc_command.rb', line 10

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:


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

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

#defaults_strObject

:nodoc:


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

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

#descriptionObject

:nodoc:


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

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


62
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
# File 'lib/rubygems/commands/rdoc_command.rb', line 62

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:


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

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