Sha256: f16d4dc6383a9bf058ce28bbe1544089d0519ea50f92236ad863b8e722dfaa83
Contents?: true
Size: 974 Bytes
Versions: 20
Compression:
Stored size: 974 Bytes
Contents
module Vagrant module Actions class Collection < Array def dependencies! each_with_index do |action, i| action.follows.each do |klass| unless self[0..i].klasses.include?(klass) raise DependencyNotSatisfiedException.new("#{action.class} action must follow #{klass}") end end action.precedes.each do |klass| unless self[i..length].klasses.include?(klass) raise DependencyNotSatisfiedException.new("#{action.class} action must precede #{klass}") end end end end def duplicates? klasses.uniq.size != size end def duplicates! raise DuplicateActionException.new if duplicates? end def klasses map { |o| o.class } end end class DuplicateActionException < Exception; end class DependencyNotSatisfiedException < Exception; end end end
Version data entries
20 entries across 20 versions & 3 rubygems