Sha256: 0e9db6669113ec95243537a5109f9ddf481f1f87be666e8e8139e586a23f0946

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

require 'timeout'

module VagrantPlugins
  module Cachier
    class Action
      class ConfigureBucketRoot
        def initialize(app, env)
          @app    = app
          @logger = Log4r::Logger.new("vagrant::cachier::action::clean")
        end

        def call(env)
          @env = env

          if !env[:cache_buckets_folder_configured] && env[:machine].config.cache.enabled?
            setup_buckets_folder
            env[:cache_buckets_folder_configured] = true
          end

          @app.call env
        end

        def setup_buckets_folder
          FileUtils.mkdir_p(cache_root.to_s) unless cache_root.exist?

          synced_folder_opts = {id: "vagrant-cache"}
          synced_folder_opts.merge!(@env[:machine].config.cache.synced_folder_opts || {})

          @env[:machine].config.vm.synced_folder cache_root, '/tmp/vagrant-cache', synced_folder_opts
          @env[:cache_dirs] = []
        end

        def cache_root
          @cache_root ||= case @env[:machine].config.cache.scope.to_sym
            when :box
              @env[:home_path].join('cache', box_name)
            when :machine
              @env[:machine].data_dir.parent.join('cache')
            else
              raise "Unknown cache scope: '#{@env[:machine].config.cache.scope}'"
          end
        end

        def box_name
          @env[:machine].config.vm.box
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vagrant-cachier-0.8.0 lib/vagrant-cachier/action/configure_bucket_root.rb