Class: VagrantPlugins::Cachier::Bucket::AptCacher

Inherits:
VagrantPlugins::Cachier::Bucket show all
Defined in:
lib/vagrant-cachier/bucket/apt_cacher.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from VagrantPlugins::Cachier::Bucket

auto_detect, bucket_name, inherited, #initialize, install

Constructor Details

This class inherits a constructor from VagrantPlugins::Cachier::Bucket

Class Method Details

.capabilityObject



7
8
9
# File 'lib/vagrant-cachier/bucket/apt_cacher.rb', line 7

def self.capability
  :apt_cacher_dir
end

Instance Method Details

#installObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/vagrant-cachier/bucket/apt_cacher.rb', line 11

def install
  machine = @env[:machine]
  guest   = machine.guest

  if guest.capability?(:apt_cacher_dir)
    if guest_path = guest.capability(:apt_cacher_dir)
      if machine.config.cache.enable_nfs
        @env[:cache_dirs] << guest_path

        machine.communicate.tap do |comm|
          comm.execute("mkdir -p /tmp/vagrant-cache/#{@name}")
          unless comm.test("test -L #{guest_path}")
            comm.sudo("rm -rf #{guest_path}")
            comm.sudo("mkdir -p `dirname #{guest_path}`")
            comm.sudo("ln -s /tmp/vagrant-cache/#{@name} #{guest_path}")
          end
        end
      else
        @env[:ui].info I18n.t('vagrant_cachier.nfs_required', bucket: 'apt-cacher')
      end
    end
  else
    @env[:ui].info I18n.t('vagrant_cachier.skipping_bucket', bucket: 'apt-cacher')
  end
end