module Polisher::VersionedDependencies
Mixin included in components that contain lists of dependencies which include version information
Requires module define ‘deps’ method which returns list of gem names representing component dependencies. List will be iterated over, versions will be looked up recursively and returned
Public Instance Methods
dependencies_satisfied?()
click to toggle source
Return bool indicating if all dependencies are satisfied
# File lib/polisher/mixins/versioned_dependencies.rb, line 72 def dependencies_satisfied? missing_dependencies.empty? end
dependency_for(name)
click to toggle source
Return specified dependency
# File lib/polisher/mixins/versioned_dependencies.rb, line 16 def dependency_for(name) deps.detect { |dep| dep.name == name } end
dependency_states()
click to toggle source
Return list of states which gem dependencies are in
# File lib/polisher/mixins/versioned_dependencies.rb, line 77 def dependency_states states = {} deps.each do |dep| gem = Polisher::Gem.new :name => dep.name states.merge dep.name => gem.state(:check => dep) end states end
dependency_tree(args = {}) { |self, dep, resolved| ... }
click to toggle source
Return mapping of gems to dependency versions
# File lib/polisher/mixins/versioned_dependencies.rb, line 32 def dependency_tree(args = {}, &bl) dependencies = {} args = {:recursive => true, :dev_deps => true, :matching => :latest, :dependencies => dependencies}.merge(args) process = [] deps.each do |dep| resolved = nil begin resolved = Polisher::Gem.matching(dep, args[:matching]) rescue end yield self, dep, resolved process << resolved unless resolved.nil? end process.each { |dep| dependencies.merge!(dep.dependency_tree(args, &bl)) } dependencies end
dependency_versions(args = {}, &bl)
click to toggle source
Return list of versions of dependencies of component.
# File lib/polisher/mixins/versioned_dependencies.rb, line 21 def dependency_versions(args = {}, &bl) versions = {} args = {:recursive => true, :dev_deps => true, :versions => versions}.merge(args) deps.each do |dep| gem = Polisher::Gem.retrieve(dep.name) versions.merge!(gem.versions(args, &bl)) end versions end
missing_dependencies()
click to toggle source
Return missing dependencies
# File lib/polisher/mixins/versioned_dependencies.rb, line 58 def missing_dependencies missing = [] dependency_versions(:recursive => false).each do |pkg, target_versions| found = false target_versions.each do |_target, versions| dependency = dependency_for(pkg) found = versions.any? { |version| dependency.match?(pkg, version) } end missing << pkg unless found end missing end