Class: Gem::DocManager

Inherits:
Object
  • Object
show all
Defined in:
lib/yard/rubygems/doc_manager.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.load_yardocObject



10
11
12
# File 'lib/yard/rubygems/doc_manager.rb', line 10

def self.load_yardoc
  require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. yard)))
end

Instance Method Details

#install_rdoc_yardObject



78
79
80
81
82
83
84
# File 'lib/yard/rubygems/doc_manager.rb', line 78

def install_rdoc_yard
  if @spec.has_rdoc?
    install_rdoc_yard_orig
  elsif @spec.has_yardoc?
    install_yardoc
  end
end

#install_ri_yardObject



63
64
65
66
67
68
69
70
71
# File 'lib/yard/rubygems/doc_manager.rb', line 63

def install_ri_yard
  install_ri_yard_orig if @spec.has_rdoc?
  return if @spec.has_rdoc? == false
  return if @spec.has_yardoc?

  self.class.load_yardoc
  say "Building YARD (yri) index for #{@spec.full_name}..."
  run_yardoc '-c', '-n'
end

#install_yardocObject



54
55
56
57
58
59
60
61
# File 'lib/yard/rubygems/doc_manager.rb', line 54

def install_yardoc
  rdoc_dir = File.join(@doc_dir, 'rdoc')

  FileUtils.rm_rf rdoc_dir

  say "Installing YARD documentation for #{@spec.full_name}..."
  run_yardoc '-o', rdoc_dir
end

#run_yardoc(*args) ⇒ Object



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
39
40
# File 'lib/yard/rubygems/doc_manager.rb', line 14

def run_yardoc(*args)
  args << '--quiet'
  args << '--backtrace' if Gem.configuration.backtrace
  unless File.file?(File.join(@spec.full_gem_path, '.yardopts'))
    args << @spec.require_paths
    unless @spec.extra_rdoc_files.empty?
      args << '-'
      args += @spec.extra_rdoc_files
    end
  end
  args = args.flatten.map(&:to_s)

  old_pwd = Dir.pwd
  Dir.chdir(@spec.full_gem_path)
  YARD::CLI::Yardoc.run(*args)
rescue Errno::EACCES => e
  dirname = File.dirname e.message.split("-")[1].strip
  raise Gem::FilePermissionError, dirname
rescue => ex
  alert_error "While generating documentation for #{@spec.full_name}"
  ui.errs.puts "... MESSAGE:   #{ex}"
  ui.errs.puts "... YARDOC args: #{args.join(' ')}"
  ui.errs.puts "\t#{ex.backtrace.join("\n\t")}" if Gem.configuration.backtrace
  ui.errs.puts "(continuing with the rest of the installation)"
ensure
  Dir.chdir(old_pwd)
end

#setup_rdocObject



43
44
45
46
47
48
49
50
51
52
# File 'lib/yard/rubygems/doc_manager.rb', line 43

def setup_rdoc
  if File.exist?(@doc_dir) && !File.writable?(@doc_dir)
    raise Gem::FilePermissionError, @doc_dir
  end

  FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)

  self.class.load_rdoc if @spec.has_rdoc?
  self.class.load_yardoc if @spec.has_yardoc?
end