Sha256: e4fa4ccede304e167923cf9510ce8a552ec5e4a436e7b23877d01ad26b8ff9dd
Contents?: true
Size: 1.13 KB
Versions: 4
Compression:
Stored size: 1.13 KB
Contents
module AboutPage class Dependencies < AboutPage::Configuration::Node delegate :each_pair, :to_xml, :to_json, :to => :to_h def to_h @dependencies ||= Hash[groups.collect { |group,deps| [group,Hash[deps.collect { |dep| [dep.name,dependency_hash(environment, dep.name)] }]] }] end private def environment @environment ||= Bundler.load end def groups @groups ||= environment.current_dependencies.group_by { |d| d.groups.first.to_s } end def dependency_version(env, key) spec = env.specs.find { |s| s.name == key } rev = spec.git_version rev.strip! unless rev.nil? location = [spec.source.options.values_at('path','uri').compact.first,rev].compact.join('@') [spec.version.to_s,location].compact.join(' ').strip end def dependency_hash(env, key, graph=nil) graph = Bundler::Graph.new(env,'/dev/null') if graph.nil? result = { :version => dependency_version(env, key) } deps = Hash[graph.relations[key].collect { |dep| [dep, dependency_hash(env, dep, graph)]}] result[:dependencies] = deps unless deps.empty? result end end end
Version data entries
4 entries across 4 versions & 1 rubygems