require 'yard' require File.join(File.dirname(__FILE__), './json_registry_store') # TODO: As far as I can tell, monkeypatching is the officially recommended way # to extend these tools to cover custom usecases. Follow up on the YARD mailing # list or IRC to see if there is a better way. class YARD::CLI::Yardoc def all_objects YARD::Registry.all(:root, :module, :class, :type, :provider, :puppetnamespace, :hostclass, :definedtype) end end class YARD::CLI::Stats def stats_for_hostclasses output 'Puppet Classes', *type_statistics(:hostclass) end def stats_for_definedtypes output 'Puppet Defined Types', *type_statistics(:definedtype) end def stats_for_puppet_types output 'Puppet Types', *type_statistics(:type) end def stats_for_puppet_provider output 'Puppet Providers', *type_statistics(:provider) end end class YARD::Logger def show_progress return false if YARD.ruby18? # threading is too ineffective for progress support return false if YARD.windows? # windows has poor ANSI support return false unless io.tty? # no TTY support on IO # Here is the actual monkey patch. A simple fix to an inverted conditional. # Without this Pry is unusable for debugging as the progress bar goes # craaaaaaaazy. return false unless level > INFO # no progress in verbose/debug modes @show_progress end # Redirect Yard command line warnings to a log file called .yardwarns # Yard warnings may be irrelevant, spurious, or may not conform with our # styling and UX design. They are also printed on stdout by default. def warn warning f = File.new '.yardwarns', 'a' f.write warning f.close() end end # 15:04:42 radens | lsegal: where would you tell yard to use your custom RegistryStore? # 15:09:54 @lsegal | https://github.com/lsegal/yard/blob/master/lib/yard/registry.rb#L428-L435 # 15:09:54 @lsegal | you would set that attr on Registry # 15:09:54 @lsegal | it might be worth expanding that API to swap out the store class used # 15:10:49 @lsegal | specifically # | https://github.com/lsegal/yard/blob/master/lib/yard/registry.rb#L190 and # | replace RegistryStore there with a storage_class attr module YARD::Registry class << self def clear self.thread_local_store = YARD::JsonRegistryStore.new end end end