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

Version Path
vagrantup-0.4.3.dev lib/vagrant/actions/collection.rb
vagrantup-0.4.1 lib/vagrant/actions/collection.rb
vagrantup-0.4.0 lib/vagrant/actions/collection.rb
vagrantup-0.3.4 lib/vagrant/actions/collection.rb
vagrantup-0.3.3 lib/vagrant/actions/collection.rb
vagrantup-0.3.2 lib/vagrant/actions/collection.rb
vagrantup-0.3.1 lib/vagrant/actions/collection.rb
vagrantup-0.3.0 lib/vagrant/actions/collection.rb
vagrantup-0.2.0 lib/vagrant/actions/collection.rb
vagrant-0.4.2 lib/vagrant/actions/collection.rb
vagrant-0.4.1 lib/vagrant/actions/collection.rb
vagrant-0.4.0 lib/vagrant/actions/collection.rb
vagrant-0.3.4 lib/vagrant/actions/collection.rb
vagrant-0.3.3 lib/vagrant/actions/collection.rb
vagrant-0.3.2 lib/vagrant/actions/collection.rb
vagrant-0.3.1 lib/vagrant/actions/collection.rb
vagrant-0.3.0 lib/vagrant/actions/collection.rb
bmabey-vagrant-0.2.0 lib/vagrant/actions/collection.rb
vagrant-0.2.0 lib/vagrant/actions/collection.rb
vagrant-0.2.0.pre lib/vagrant/actions/collection.rb