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=, common_options, 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

Methods included from DefaultUserInteraction

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

Constructor Details

#initializeRdocCommand

Returns a new instance of RdocCommand.



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

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:



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

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

#defaults_strObject

:nodoc:



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

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

#descriptionObject

:nodoc:



46
47
48
49
50
51
# File 'lib/rubygems/commands/rdoc_command.rb', line 46

def description # :nodoc:
  <<-DESC
The rdoc command builds RDoc and RI documentation for installed gems.  Use
--overwrite to force rebuilding of documentation.
  DESC
end

#executeObject



57
58
59
60
61
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
# File 'lib/rubygems/commands/rdoc_command.rb', line 57

def execute
  specs = if options[:all] then
            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? then
    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] then
      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:



53
54
55
# File 'lib/rubygems/commands/rdoc_command.rb', line 53

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