vagrant-cachier 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +59 -34
- data/LICENSE.txt +1 -1
- data/README.md +27 -10
- data/development/Cheffile.lock +1 -5
- data/development/Vagrantfile +81 -71
- data/docs/buckets/apt-lists.md +18 -0
- data/docs/how-does-it-work.md +5 -6
- data/docs/index.md +24 -5
- data/docs/template.html +1 -0
- data/docs/usage.md +81 -28
- data/lib/vagrant-cachier/action/clean.rb +1 -1
- data/lib/vagrant-cachier/action/configure_bucket_root.rb +46 -0
- data/lib/vagrant-cachier/action/install_buckets.rb +47 -0
- data/lib/vagrant-cachier/bucket.rb +55 -0
- data/lib/vagrant-cachier/bucket/apt.rb +3 -12
- data/lib/vagrant-cachier/bucket/apt_cacher.rb +1 -13
- data/lib/vagrant-cachier/bucket/apt_lists.rb +24 -0
- data/lib/vagrant-cachier/bucket/chef.rb +1 -14
- data/lib/vagrant-cachier/bucket/composer.rb +1 -14
- data/lib/vagrant-cachier/bucket/gem.rb +4 -17
- data/lib/vagrant-cachier/bucket/npm.rb +1 -14
- data/lib/vagrant-cachier/bucket/pacman.rb +1 -14
- data/lib/vagrant-cachier/bucket/rvm.rb +4 -17
- data/lib/vagrant-cachier/bucket/yum.rb +4 -15
- data/lib/vagrant-cachier/bucket/zypper.rb +4 -15
- data/lib/vagrant-cachier/cap/debian/apt_lists_dir.rb +13 -0
- data/lib/vagrant-cachier/capabilities.rb +64 -0
- data/lib/vagrant-cachier/config.rb +35 -10
- data/lib/vagrant-cachier/hooks.rb +27 -0
- data/lib/vagrant-cachier/plugin.rb +12 -80
- data/lib/vagrant-cachier/version.rb +1 -1
- data/locales/en.yml +3 -7
- data/vagrant-cachier.gemspec +11 -1
- metadata +20 -12
- data/lib/vagrant-cachier/action/ensure_single_cache_root.rb +0 -64
- data/lib/vagrant-cachier/errors.rb +0 -9
- data/lib/vagrant-cachier/provision_ext.rb +0 -74
| @@ -1,6 +1,7 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 1 | 
            +
            # TODO: Switch to Vagrant.require_version before 1.0.0
         | 
| 2 | 
            +
            #       see: https://github.com/mitchellh/vagrant/blob/bc55081e9ffaa6820113e449a9f76b293a29b27d/lib/vagrant.rb#L202-L228
         | 
| 3 | 
            +
            unless Gem::Requirement.new('>= 1.4.0').satisfied_by?(Gem::Version.new(Vagrant::VERSION))
         | 
| 4 | 
            +
              raise 'vagrant-cachier requires Vagrant >= 1.4.0 in order to work!'
         | 
| 4 5 | 
             
            end
         | 
| 5 6 |  | 
| 6 7 | 
             
            # Add our custom translations to the load path
         | 
| @@ -10,87 +11,18 @@ module VagrantPlugins | |
| 10 11 | 
             
              module Cachier
         | 
| 11 12 | 
             
                class Plugin < Vagrant.plugin('2')
         | 
| 12 13 | 
             
                  name 'vagrant-cachier'
         | 
| 13 | 
            -
             | 
| 14 14 | 
             
                  config 'cache' do
         | 
| 15 15 | 
             
                    require_relative "config"
         | 
| 16 16 | 
             
                    Config
         | 
| 17 17 | 
             
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  guest_capability 'linux', 'gemdir' do
         | 
| 20 | 
            -
                    require_relative 'cap/linux/gemdir'
         | 
| 21 | 
            -
                    Cap::Linux::Gemdir
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                  guest_capability 'linux', 'rvm_path' do
         | 
| 25 | 
            -
                    require_relative 'cap/linux/rvm_path'
         | 
| 26 | 
            -
                    Cap::Linux::RvmPath
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  guest_capability 'linux', 'composer_path' do
         | 
| 30 | 
            -
                    require_relative 'cap/linux/composer_path'
         | 
| 31 | 
            -
                    Cap::Linux::ComposerPath
         | 
| 32 | 
            -
                  end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  guest_capability 'linux', 'chef_file_cache_path' do
         | 
| 35 | 
            -
                    require_relative 'cap/linux/chef_file_cache_path'
         | 
| 36 | 
            -
                    Cap::Linux::ChefFileCachePath
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                  guest_capability 'linux', 'npm_cache_dir' do
         | 
| 40 | 
            -
                    require_relative 'cap/linux/npm_cache_dir'
         | 
| 41 | 
            -
                    Cap::Linux::NpmCacheDir
         | 
| 42 | 
            -
                  end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  guest_capability 'debian', 'apt_cache_dir' do
         | 
| 45 | 
            -
                    require_relative 'cap/debian/apt_cache_dir'
         | 
| 46 | 
            -
                    Cap::Debian::AptCacheDir
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                  guest_capability 'debian', 'apt_cacher_dir' do
         | 
| 50 | 
            -
                    require_relative 'cap/debian/apt_cacher_dir'
         | 
| 51 | 
            -
                    Cap::Debian::AptCacherDir
         | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                  guest_capability 'redhat', 'yum_cache_dir' do
         | 
| 55 | 
            -
                    require_relative 'cap/redhat/yum_cache_dir'
         | 
| 56 | 
            -
                    Cap::RedHat::YumCacheDir
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                  guest_capability 'suse', 'yum_cache_dir' do
         | 
| 60 | 
            -
                    # Disable Yum on suse guests
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  guest_capability 'arch', 'pacman_cache_dir' do
         | 
| 64 | 
            -
                    require_relative 'cap/arch/pacman_cache_dir'
         | 
| 65 | 
            -
                    Cap::Arch::PacmanCacheDir
         | 
| 66 | 
            -
                  end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                  guest_capability 'suse', 'zypper_cache_dir' do
         | 
| 69 | 
            -
                    require_relative 'cap/suse/zypper_cache_dir'
         | 
| 70 | 
            -
                    Cap::SuSE::ZypperCacheDir
         | 
| 71 | 
            -
                  end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                  # TODO: This should be generic, we don't want to hard code every single
         | 
| 74 | 
            -
                  #       possible provider action class that Vagrant might have
         | 
| 75 | 
            -
                  ensure_single_cache_root = lambda do |hook|
         | 
| 76 | 
            -
                    require_relative 'action/ensure_single_cache_root'
         | 
| 77 | 
            -
                    hook.before VagrantPlugins::ProviderVirtualBox::Action::Boot, Action::EnsureSingleCacheRoot
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                    if defined?(Vagrant::LXC)
         | 
| 80 | 
            -
                      # TODO: Require just the boot action file once its "require dependencies" are sorted out
         | 
| 81 | 
            -
                      require 'vagrant-lxc/action'
         | 
| 82 | 
            -
                      hook.before Vagrant::LXC::Action::Boot, Action::EnsureSingleCacheRoot
         | 
| 83 | 
            -
                    end
         | 
| 84 | 
            -
                  end
         | 
| 85 | 
            -
                  action_hook 'ensure-single-cache-root-exists-on-up',     :machine_action_up,     &ensure_single_cache_root
         | 
| 86 | 
            -
                  action_hook 'ensure-single-cache-root-exists-on-reload', :machine_action_reload, &ensure_single_cache_root
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                  clean_action_hook = lambda do |hook|
         | 
| 89 | 
            -
                    require_relative 'action/clean'
         | 
| 90 | 
            -
                    hook.before Vagrant::Action::Builtin::GracefulHalt, Action::Clean
         | 
| 91 | 
            -
                  end
         | 
| 92 | 
            -
                  action_hook 'remove-guest-symlinks-on-halt',    :machine_action_halt,    &clean_action_hook
         | 
| 93 | 
            -
                  action_hook 'remove-guest-symlinks-on-package', :machine_action_package, &clean_action_hook
         | 
| 94 18 | 
             
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                # Keep an eye on https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins#wiki-providers
         | 
| 21 | 
            +
                # for more.
         | 
| 22 | 
            +
                CLOUD_PROVIDERS = %w( aws cloudstack digitalocean hp joyent openstack rackspace
         | 
| 23 | 
            +
                                      softlayer proxmox managed )
         | 
| 95 24 | 
             
              end
         | 
| 96 25 | 
             
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            require_relative "hooks"
         | 
| 28 | 
            +
            require_relative "capabilities"
         | 
    
        data/locales/en.yml
    CHANGED
    
    | @@ -16,10 +16,6 @@ en: | |
| 16 16 | 
             
                  scoped cache dirs starting with the 0.3.0 version of the plugin.
         | 
| 17 17 | 
             
                unable_to_ssh: |-
         | 
| 18 18 | 
             
                  vagrant-cachier was unable to SSH into the VM to remove symlinks!
         | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
                   | 
| 22 | 
            -
                    There are multiple provider specific cache dirs for the '%{machine}' machine:
         | 
| 23 | 
            -
                    %{dirs}
         | 
| 24 | 
            -
                    Please move one of them up to `%{machine_path}/cache` and remove the others
         | 
| 25 | 
            -
                    before bringing the machine up again.
         | 
| 19 | 
            +
                backed_by_cloud_provider: |-
         | 
| 20 | 
            +
                  The machine is backed by a cloud provider (%{provider}), caching
         | 
| 21 | 
            +
                  will be disabled.
         | 
    
        data/vagrant-cachier.gemspec
    CHANGED
    
    | @@ -8,7 +8,7 @@ Gem::Specification.new do |spec| | |
| 8 8 | 
             
              spec.version       = VagrantPlugins::Cachier::VERSION
         | 
| 9 9 | 
             
              spec.authors       = ["Fabio Rehm"]
         | 
| 10 10 | 
             
              spec.email         = ["fgrehm@gmail.com"]
         | 
| 11 | 
            -
              spec.description   = %q{ | 
| 11 | 
            +
              spec.description   = %q{Caffeine reducer}
         | 
| 12 12 | 
             
              spec.summary       = spec.description
         | 
| 13 13 | 
             
              spec.homepage      = "https://github.com/fgrehm/vagrant-cachier"
         | 
| 14 14 | 
             
              spec.license       = "MIT"
         | 
| @@ -17,4 +17,14 @@ Gem::Specification.new do |spec| | |
| 17 17 | 
             
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 18 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              spec.post_install_message = %q{
         | 
| 22 | 
            +
              If you are new to vagrant-cachier just follow along with the docs available
         | 
| 23 | 
            +
              at http://fgrehm.viewdocs.io/vagrant-cachier.
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              If you are a long time user, please note that plugin has gone through many
         | 
| 26 | 
            +
              backwards incompatible changes since 0.6.0 so checkout
         | 
| 27 | 
            +
              https://github.com/fgrehm/vagrant-cachier/blob/master/CHANGELOG.md
         | 
| 28 | 
            +
              before continuing and caching all the things :)
         | 
| 29 | 
            +
              }
         | 
| 20 30 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,23 +1,23 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vagrant-cachier
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Fabio Rehm
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-02-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 | 
            -
            description:  | 
| 13 | 
            +
            description: Caffeine reducer
         | 
| 14 14 | 
             
            email:
         | 
| 15 15 | 
             
            - fgrehm@gmail.com
         | 
| 16 16 | 
             
            executables: []
         | 
| 17 17 | 
             
            extensions: []
         | 
| 18 18 | 
             
            extra_rdoc_files: []
         | 
| 19 19 | 
             
            files:
         | 
| 20 | 
            -
            - .gitignore
         | 
| 20 | 
            +
            - ".gitignore"
         | 
| 21 21 | 
             
            - CHANGELOG.md
         | 
| 22 22 | 
             
            - Gemfile
         | 
| 23 23 | 
             
            - Gemfile.lock
         | 
| @@ -29,6 +29,7 @@ files: | |
| 29 29 | 
             
            - development/Vagrantfile
         | 
| 30 30 | 
             
            - docs/benchmarks.md
         | 
| 31 31 | 
             
            - docs/buckets/apt-cacher.md
         | 
| 32 | 
            +
            - docs/buckets/apt-lists.md
         | 
| 32 33 | 
             
            - docs/buckets/apt.md
         | 
| 33 34 | 
             
            - docs/buckets/chef.md
         | 
| 34 35 | 
             
            - docs/buckets/composer.md
         | 
| @@ -45,10 +46,12 @@ files: | |
| 45 46 | 
             
            - docs/usage.md
         | 
| 46 47 | 
             
            - lib/vagrant-cachier.rb
         | 
| 47 48 | 
             
            - lib/vagrant-cachier/action/clean.rb
         | 
| 48 | 
            -
            - lib/vagrant-cachier/action/ | 
| 49 | 
            +
            - lib/vagrant-cachier/action/configure_bucket_root.rb
         | 
| 50 | 
            +
            - lib/vagrant-cachier/action/install_buckets.rb
         | 
| 49 51 | 
             
            - lib/vagrant-cachier/bucket.rb
         | 
| 50 52 | 
             
            - lib/vagrant-cachier/bucket/apt.rb
         | 
| 51 53 | 
             
            - lib/vagrant-cachier/bucket/apt_cacher.rb
         | 
| 54 | 
            +
            - lib/vagrant-cachier/bucket/apt_lists.rb
         | 
| 52 55 | 
             
            - lib/vagrant-cachier/bucket/chef.rb
         | 
| 53 56 | 
             
            - lib/vagrant-cachier/bucket/composer.rb
         | 
| 54 57 | 
             
            - lib/vagrant-cachier/bucket/gem.rb
         | 
| @@ -60,6 +63,7 @@ files: | |
| 60 63 | 
             
            - lib/vagrant-cachier/cap/arch/pacman_cache_dir.rb
         | 
| 61 64 | 
             
            - lib/vagrant-cachier/cap/debian/apt_cache_dir.rb
         | 
| 62 65 | 
             
            - lib/vagrant-cachier/cap/debian/apt_cacher_dir.rb
         | 
| 66 | 
            +
            - lib/vagrant-cachier/cap/debian/apt_lists_dir.rb
         | 
| 63 67 | 
             
            - lib/vagrant-cachier/cap/linux/chef_file_cache_path.rb
         | 
| 64 68 | 
             
            - lib/vagrant-cachier/cap/linux/composer_path.rb
         | 
| 65 69 | 
             
            - lib/vagrant-cachier/cap/linux/gemdir.rb
         | 
| @@ -67,10 +71,10 @@ files: | |
| 67 71 | 
             
            - lib/vagrant-cachier/cap/linux/rvm_path.rb
         | 
| 68 72 | 
             
            - lib/vagrant-cachier/cap/redhat/yum_cache_dir.rb
         | 
| 69 73 | 
             
            - lib/vagrant-cachier/cap/suse/zypper_cache_dir.rb
         | 
| 74 | 
            +
            - lib/vagrant-cachier/capabilities.rb
         | 
| 70 75 | 
             
            - lib/vagrant-cachier/config.rb
         | 
| 71 | 
            -
            - lib/vagrant-cachier/ | 
| 76 | 
            +
            - lib/vagrant-cachier/hooks.rb
         | 
| 72 77 | 
             
            - lib/vagrant-cachier/plugin.rb
         | 
| 73 | 
            -
            - lib/vagrant-cachier/provision_ext.rb
         | 
| 74 78 | 
             
            - lib/vagrant-cachier/version.rb
         | 
| 75 79 | 
             
            - locales/en.yml
         | 
| 76 80 | 
             
            - spec/acceptance/fixtures/auto-detect-with-provisioning.rb
         | 
| @@ -84,26 +88,30 @@ homepage: https://github.com/fgrehm/vagrant-cachier | |
| 84 88 | 
             
            licenses:
         | 
| 85 89 | 
             
            - MIT
         | 
| 86 90 | 
             
            metadata: {}
         | 
| 87 | 
            -
            post_install_message: 
         | 
| 91 | 
            +
            post_install_message: "\n  If you are new to vagrant-cachier just follow along with
         | 
| 92 | 
            +
              the docs available\n  at http://fgrehm.viewdocs.io/vagrant-cachier.\n\n  If you
         | 
| 93 | 
            +
              are a long time user, please note that plugin has gone through many\n  backwards
         | 
| 94 | 
            +
              incompatible changes since 0.6.0 so checkout\n  https://github.com/fgrehm/vagrant-cachier/blob/master/CHANGELOG.md\n
         | 
| 95 | 
            +
              \ before continuing and caching all the things :)\n  "
         | 
| 88 96 | 
             
            rdoc_options: []
         | 
| 89 97 | 
             
            require_paths:
         | 
| 90 98 | 
             
            - lib
         | 
| 91 99 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 92 100 | 
             
              requirements:
         | 
| 93 | 
            -
              - -  | 
| 101 | 
            +
              - - ">="
         | 
| 94 102 | 
             
                - !ruby/object:Gem::Version
         | 
| 95 103 | 
             
                  version: '0'
         | 
| 96 104 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 97 105 | 
             
              requirements:
         | 
| 98 | 
            -
              - -  | 
| 106 | 
            +
              - - ">="
         | 
| 99 107 | 
             
                - !ruby/object:Gem::Version
         | 
| 100 108 | 
             
                  version: '0'
         | 
| 101 109 | 
             
            requirements: []
         | 
| 102 110 | 
             
            rubyforge_project: 
         | 
| 103 | 
            -
            rubygems_version: 2. | 
| 111 | 
            +
            rubygems_version: 2.2.2
         | 
| 104 112 | 
             
            signing_key: 
         | 
| 105 113 | 
             
            specification_version: 4
         | 
| 106 | 
            -
            summary:  | 
| 114 | 
            +
            summary: Caffeine reducer
         | 
| 107 115 | 
             
            test_files:
         | 
| 108 116 | 
             
            - spec/acceptance/fixtures/auto-detect-with-provisioning.rb
         | 
| 109 117 | 
             
            - spec/acceptance/fixtures/auto-detect.rb
         | 
| @@ -1,64 +0,0 @@ | |
| 1 | 
            -
            require_relative '../errors'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module VagrantPlugins
         | 
| 4 | 
            -
              module Cachier
         | 
| 5 | 
            -
                class Action
         | 
| 6 | 
            -
                  class EnsureSingleCacheRoot
         | 
| 7 | 
            -
                    def initialize(app, env)
         | 
| 8 | 
            -
                      @app = app
         | 
| 9 | 
            -
                    end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    def call(env)
         | 
| 12 | 
            -
                      @env = env
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                      # If the cache is scoped to boxes or the existing cache dirs are not
         | 
| 15 | 
            -
                      # provider specific, there's nothing we need to do
         | 
| 16 | 
            -
                      if cache_scoped_to_machine? && provider_specific_cache_dirs.any?
         | 
| 17 | 
            -
                        ensure_single_cache_root_exists!
         | 
| 18 | 
            -
                      end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                      @app.call(env)
         | 
| 21 | 
            -
                    end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    def cache_scoped_to_machine?
         | 
| 24 | 
            -
                      @env[:machine].config.cache.enabled? &&
         | 
| 25 | 
            -
                        @env[:machine].config.cache.scope.to_sym == :machine
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    def ensure_single_cache_root_exists!
         | 
| 29 | 
            -
                      if provider_specific_cache_dirs.size > 1
         | 
| 30 | 
            -
                        cache_dirs = provider_specific_cache_dirs.map do |dir|
         | 
| 31 | 
            -
                          "  - #{dir.to_s.gsub(/^#{@env[:root_path]}\//, '')}"
         | 
| 32 | 
            -
                        end
         | 
| 33 | 
            -
                        machine_path = @env[:machine].data_dir.parent.to_s.gsub(/^#{@env[:root_path]}\//, '')
         | 
| 34 | 
            -
                        raise Cachier::Errors::MultipleProviderSpecificCacheDirsFound,
         | 
| 35 | 
            -
                                  machine:      @env[:machine].name,
         | 
| 36 | 
            -
                                  machine_path: machine_path,
         | 
| 37 | 
            -
                                  dirs:         cache_dirs.join("\n")
         | 
| 38 | 
            -
                      else
         | 
| 39 | 
            -
                        current_path = provider_specific_cache_dirs.first.to_s.gsub(/^#{@env[:root_path]}\//, '')
         | 
| 40 | 
            -
                        new_path     = @env[:machine].data_dir.parent.join('cache')
         | 
| 41 | 
            -
                        FileUtils.rm_rf new_path.to_s if new_path.directory?
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                        new_path = new_path.to_s.gsub(/^#{@env[:root_path]}\//, '')
         | 
| 44 | 
            -
                        # If we got here there is a single provider specific cacher dir, so
         | 
| 45 | 
            -
                        # let's be nice with users and just fix it ;)
         | 
| 46 | 
            -
                        @env[:ui].warn I18n.t('vagrant_cachier.will_fix_machine_cache_dir',
         | 
| 47 | 
            -
                                              current_path: current_path,
         | 
| 48 | 
            -
                                              new_path:     new_path)
         | 
| 49 | 
            -
                        FileUtils.mv current_path, new_path
         | 
| 50 | 
            -
                      end
         | 
| 51 | 
            -
                    end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                    def provider_specific_cache_dirs
         | 
| 54 | 
            -
                      return @provider_specific_cache_dirs if @provider_specific_cache_dirs
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      # By default data_dir points to ./.vagrant/machines/<NAME>/<PROVIDER>,
         | 
| 57 | 
            -
                      # so we go one directory up
         | 
| 58 | 
            -
                      machine_dir = @env[:machine].data_dir.parent
         | 
| 59 | 
            -
                      @provider_specific_cache_dirs = Pathname.glob(machine_dir.join('*/cache'))
         | 
| 60 | 
            -
                    end
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
                end
         | 
| 63 | 
            -
              end
         | 
| 64 | 
            -
            end
         | 
| @@ -1,74 +0,0 @@ | |
| 1 | 
            -
            require_relative 'bucket'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module VagrantPlugins
         | 
| 4 | 
            -
              module Cachier
         | 
| 5 | 
            -
                module ProvisionExt
         | 
| 6 | 
            -
                  def self.included(base)
         | 
| 7 | 
            -
                    base.class_eval do
         | 
| 8 | 
            -
                      def cachier_debug(msg)
         | 
| 9 | 
            -
                        @logger.debug "[CACHIER] #{msg}"
         | 
| 10 | 
            -
                      end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                      alias :old_call :call
         | 
| 13 | 
            -
                      def call(env)
         | 
| 14 | 
            -
                        @env = env
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                        return old_call(env) unless env[:machine].config.cache.enabled?
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                        FileUtils.mkdir_p(cache_root.to_s) unless cache_root.exist?
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                        synced_folder_opts = {id: "vagrant-cache"}
         | 
| 21 | 
            -
                        if env[:machine].config.cache.enable_nfs
         | 
| 22 | 
            -
                          # REFACTOR: Drop the `nfs: true` argument once we drop support for Vagrant < 1.4
         | 
| 23 | 
            -
                          synced_folder_opts.merge!({ nfs: true, type: 'nfs' })
         | 
| 24 | 
            -
                        end
         | 
| 25 | 
            -
                        env[:machine].config.vm.synced_folder cache_root, '/tmp/vagrant-cache', synced_folder_opts
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                        env[:cache_dirs] = []
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                        old_call(env)
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                        configure_cache_buckets
         | 
| 32 | 
            -
                      end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                      alias :old_run_provisioner :run_provisioner
         | 
| 35 | 
            -
                      def run_provisioner(*args)
         | 
| 36 | 
            -
                        configure_cache_buckets
         | 
| 37 | 
            -
                        old_run_provisioner(*args)
         | 
| 38 | 
            -
                      end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                      def configure_cache_buckets
         | 
| 41 | 
            -
                        return unless @env[:machine].config.cache.enabled?
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                        if @env[:machine].config.cache.auto_detect
         | 
| 44 | 
            -
                          Bucket.auto_detect(@env)
         | 
| 45 | 
            -
                        end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                        return unless @env[:machine].config.cache.buckets.any?
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                        @env[:ui].info 'Configuring cache buckets...'
         | 
| 50 | 
            -
                        cache_config = @env[:machine].config.cache
         | 
| 51 | 
            -
                        cache_config.buckets.each do |bucket_name, configs|
         | 
| 52 | 
            -
                          cachier_debug "Installing #{bucket_name} with configs #{configs.inspect}"
         | 
| 53 | 
            -
                          Bucket.install(bucket_name, @env, configs)
         | 
| 54 | 
            -
                        end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                        data_file = @env[:machine].data_dir.join('cache_dirs')
         | 
| 57 | 
            -
                        data_file.open('w') { |f| f.print @env[:cache_dirs].uniq.join("\n") }
         | 
| 58 | 
            -
                      end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                      def cache_root
         | 
| 61 | 
            -
                        @cache_root ||= case @env[:machine].config.cache.scope.to_sym
         | 
| 62 | 
            -
                          when :box
         | 
| 63 | 
            -
                            @env[:home_path].join('cache', @env[:machine].box.name)
         | 
| 64 | 
            -
                          when :machine
         | 
| 65 | 
            -
                            @env[:machine].data_dir.parent.join('cache')
         | 
| 66 | 
            -
                          else
         | 
| 67 | 
            -
                            raise "Unknown cache scope: '#{@env[:machine].config.cache.scope}'"
         | 
| 68 | 
            -
                        end
         | 
| 69 | 
            -
                      end
         | 
| 70 | 
            -
                    end
         | 
| 71 | 
            -
                  end
         | 
| 72 | 
            -
                end
         | 
| 73 | 
            -
              end
         | 
| 74 | 
            -
            end
         |