class YARD::RubygemsHook
Attributes
yard_version[R]
Loaded version of YARD
. Set by ::load_yard
force[RW]
Force installation of documentation?
generate_yard[RW]
Generate yard?
generate_yri[RW]
Generate yri data?
Public Class Methods
generation_hook(installer, specs)
click to toggle source
Post installs hook that generates documentation for each specification in specs
# File lib/yard/rubygems/hook.rb, line 45 def self.generation_hook(installer, specs) start = Time.now types = installer.document generate_yard = types.include?('yardoc') || types.include?('yard') generate_yri = types.include? 'yri' specs.each do |spec| gen_yard = generate_yard gen_yri = generate_yri gen_yri = false if gen_yard # never generate both, no need unless types.empty? # --no-document is not in effect # look at spec.metadata['yard.run'] for override run_yard = spec.metadata['yard.run'] gen_yard = true if run_yard && run_yard != 'yri' gen_yri = true if run_yard == 'yri' end new(spec, gen_yard, gen_yri).generate end return unless generate_yard || generate_yri duration = (Time.now - start).to_i names = specs.map(&:name).join ', ' say "Done installing documentation for #{names} after #{duration} seconds" end
load_yard()
click to toggle source
Loads the YARD
generator
# File lib/yard/rubygems/hook.rb, line 85 def self.load_yard return if @yard_version require 'yard' @yard_version = Gem::Version.new ::YARD::VERSION end
new(spec, generate_yard = false, generate_yri = true)
click to toggle source
# File lib/yard/rubygems/hook.rb, line 93 def initialize(spec, generate_yard = false, generate_yri = true) @doc_dir = spec.doc_dir @force = false @spec = spec @generate_yard = generate_yard @generate_yri = generate_yri @yard_dir = spec.doc_dir('yard') @yri_dir = spec.doc_dir('.yardoc') end
removal_hook(uninstaller)
click to toggle source
Pre uninstalls hook that removes documentation
# File lib/yard/rubygems/hook.rb, line 78 def self.removal_hook(uninstaller) new(uninstaller.spec).remove end
Public Instance Methods
generate()
click to toggle source
Generates YARD
and yri data
# File lib/yard/rubygems/hook.rb, line 148 def generate return if @spec.default_gem? return unless @generate_yri || @generate_yard setup install_yri if @generate_yri && (@force || !File.exist?(@yri_dir)) install_yard if @generate_yard && (@force || !File.exist?(@yard_dir)) end
install_yard()
click to toggle source
# File lib/yard/rubygems/hook.rb, line 131 def install_yard FileUtils.rm_rf @yard_dir say "Installing YARD documentation for #{@spec.full_name}..." run_yardoc '--no-progress', '--db', @yri_dir, '-o', @yard_dir end
install_yri()
click to toggle source
# File lib/yard/rubygems/hook.rb, line 138 def install_yri FileUtils.rm_rf @yri_dir say "Building YARD (yri) index for #{@spec.full_name}..." run_yardoc '--no-progress', '-c', '-n', '--db', @yri_dir end
remove()
click to toggle source
Removes YARD
and yri data
# File lib/yard/rubygems/hook.rb, line 189 def remove uninstall_yri uninstall_yard end
run_yardoc(*args)
click to toggle source
# File lib/yard/rubygems/hook.rb, line 105 def run_yardoc(*args) args << '--quiet' unless Gem.configuration.really_verbose 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) Dir.chdir(@spec.full_gem_path) do YARD::CLI::Yardoc.run(*args) end 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)" end
setup()
click to toggle source
Prepares the spec for documentation generation
# File lib/yard/rubygems/hook.rb, line 162 def setup self.class.load_yard if File.exist?(@doc_dir) raise Gem::FilePermissionError, @doc_dir unless File.writable?(@doc_dir) else FileUtils.mkdir_p @doc_dir end end
uninstall_yard()
click to toggle source
# File lib/yard/rubygems/hook.rb, line 172 def uninstall_yard if File.exist?(@yard_dir) raise Gem::FilePermissionError, @yard_dir unless File.writable?(@yard_dir) FileUtils.rm_rf @yard_dir end end
uninstall_yri()
click to toggle source
# File lib/yard/rubygems/hook.rb, line 179 def uninstall_yri if File.exist?(@yri_dir) raise Gem::FilePermissionError, @yri_dir unless File.writable?(@yri_dir) FileUtils.rm_rf @yri_dir end end