Sha256: e61529a38c7647725a624c69ab29fc5f283ebc8d508339e4bce894ee9bf26a02

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

module Berkshelf
  module Vagrant
    module Action
      # @author Jamie Winsor <jamie@vialstudios.com>
      # @author Andrew Garson <andrew.garson@gmail.com>
      class Install
        attr_reader :config
        attr_reader :shelf
        attr_reader :berksfile

        def initialize(app, env)
          @app                  = app
          @shelf                = Berkshelf::Vagrant.shelf_for(env)
          @config               = env[:global_config].berkshelf
          Berkshelf.config_path = @config.config_path
          Berkshelf.load_config
          @berksfile            = Berksfile.from_file(@config.berksfile_path)
        end

        def call(env)
          if Berkshelf::Vagrant.chef_solo?(env[:global_config])
            configure_cookbooks_path(env)
            install(env)
          end

          @app.call(env)
        end

        private

          def install(env)
            Berkshelf.formatter.msg "installing cookbooks..."
            opts = {
              path: self.shelf
            }.merge(self.config.to_hash).symbolize_keys!
            berksfile.install(opts)
          end

          def configure_cookbooks_path(env)
            Berkshelf::Vagrant.provisioners(:chef_solo, env[:global_config]).each do |provisioner|
              provisioner.config.cookbooks_path.unshift(self.shelf)
            end
          end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
berkshelf-0.6.0.beta1 lib/berkshelf/vagrant/action/install.rb
berkshelf-0.5.0 lib/berkshelf/vagrant/action/install.rb
berkshelf-0.5.0.rc4 lib/berkshelf/vagrant/action/install.rb
berkshelf-0.5.0.rc3 lib/berkshelf/vagrant/action/install.rb
berkshelf-0.5.0.rc2 lib/berkshelf/vagrant/action/install.rb
berkshelf-0.5.0.rc1 lib/berkshelf/vagrant/action/install.rb