A Ruby versioning constraint solver implementing Semantic Versioning 2.0.0-rc.1.
$ gem install solve
Create a new graph
graph = Graph.new
Add an artifact to the graph
graph.artifacts("nginx", "1.0.0")
Now add another artifact that has a dependency
graph.artifacts("mysql", "1.2.4-alpha.1").depends("openssl", "~> 1.0.0")
Dependencies can be chained, too
graph.artifacts("ntp", "1.0.0").depends("build-essential").depends("yum")
And now solve the graph with some demands
Solve.it!(graph, ['nginx', '>= 0.100.0'])
graph.artifacts("nginx", "1.0.0").delete
artifact.dependencies("nginx", "~> 1.0.0").delete