Sha256: a17694553289c4a422eb07fdc1f30b3215418ac8607ae5dbc28b19a1eec71429
Contents?: true
Size: 963 Bytes
Versions: 2
Compression:
Stored size: 963 Bytes
Contents
require 'rgl/adjacency' require 'rgl/topsort' require 'rgl/dot' module MavenPom class Sorter attr_reader :dag def initialize(poms) @poms = poms build_graph end def sort sorted_keys = @dag.topsort_iterator.to_a.reverse sorted_keys.map { |key| @map[key] }.compact end private def build_graph @dag = RGL::DirectedAdjacencyGraph.new @map = {} @poms.each do |pom| @map[pom.key] = pom @dag.add_vertex(pom.key) end @dag.vertices.each do |key| pom = @map.fetch(key) pom.dependencies.each do |dep| @dag.add_edge key, dep end if parent = pom.parent @dag.add_edge key, parent end pom.build_plugins.each do |plugin| @dag.add_edge key, plugin end end unless @dag.acyclic? raise CyclicDependencyError, "dependency graph has cycles" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
maven_pom-0.0.2 | lib/maven_pom/sorter.rb |
maven_pom-0.0.1 | lib/maven_pom/sorter.rb |