class Yoda::Store::Actions::ImportGem
Attributes
gem_name[R]
@return [String]
gem_version[R]
@return [String]
registry[R]
@return [Registry]
Public Class Methods
new(registry:, gem_name:, gem_version:)
click to toggle source
@param registry [Registry] @param gem_name
[String] @param gem_version
[String]
# File lib/yoda/store/actions/import_gem.rb, line 23 def initialize(registry:, gem_name:, gem_version:) @registry = registry @gem_name = gem_name @gem_version = gem_version end
run(args = {})
click to toggle source
@return [true, false]
# File lib/yoda/store/actions/import_gem.rb, line 15 def run(args = {}) new(args).run end
Public Instance Methods
run()
click to toggle source
@return [true, false]
# File lib/yoda/store/actions/import_gem.rb, line 30 def run create_dependency_doc if yardoc_file = yardoc_path if patch = load_yardoc(yardoc_file, gem_path) registry.add_patch(patch) return true end end false end
Private Instance Methods
create_dependency_doc()
click to toggle source
# File lib/yoda/store/actions/import_gem.rb, line 43 def create_dependency_doc if yardoc_path Logger.info "Gem docs for #{gem_name} #{gem_version} already exist" return true end Logger.info "Building gem docs for #{gem_name} #{gem_version}" begin o, e = Open3.capture2e("yard gems #{gem_name} #{gem_version}") Logger.debug o unless o.empty? if e.success? Logger.info "Done building gem docs for #{gem_name} #{gem_version}" else Logger.warn "Failed to build #{gem_name} #{gem_version}" end rescue => ex Logger.debug ex Logger.debug ex.backtrace Logger.warn "Failed to build #{gem_name} #{gem_version}" end end
gem_path()
click to toggle source
@return [String, nil]
# File lib/yoda/store/actions/import_gem.rb, line 88 def gem_path @gem_path ||= begin if spec = Gem.source_index.find_name(gem_name).first spec.full_gem_path end end end
load_yardoc(yardoc_file, gem_source_path)
click to toggle source
@param yardoc_file [String] @param gem_source_path [String] @return [Objects::Patch, nil]
# File lib/yoda/store/actions/import_gem.rb, line 67 def load_yardoc(yardoc_file, gem_source_path) begin YardImporter.import(yardoc_file, root_path: gem_source_path) rescue => ex Logger.debug ex Logger.debug ex.backtrace Logger.warn "Failed to load #{yardoc_file}" nil end end
yardoc_path()
click to toggle source
@return [String, nil]
# File lib/yoda/store/actions/import_gem.rb, line 79 def yardoc_path YARD::Registry.yardoc_file_for_gem(gem_name, gem_version) rescue Bundler::BundlerError => ex Logger.debug ex Logger.debug ex.backtrace nil end