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, #get_platform_from_requirements

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=, #extract_gem_name_and_version, #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.



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:



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:



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:



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



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
96
# 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
      match = / - /.match(e.message)
      alert_error "Unable to document #{spec.full_name}, " \
                  " #{match.post_match} is missing, skipping"
      terminate_interaction 1 if specs.length == 1
    end
  end
end

#usageObject

:nodoc:



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

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