Add support for caching pip packages

These directories are chached for pip packages:
$HOME/.cache/pip/http
$HOME/.cache/pip/wheels
This commit is contained in:
AmirAli Moinfar 2015-07-04 16:23:18 +04:30 committed by Mehran Kholdi
parent 40dddfb368
commit 1c3fcd2768
4 changed files with 48 additions and 0 deletions

View file

@ -101,3 +101,4 @@ require_relative "bucket/bower"
require_relative "bucket/npm" require_relative "bucket/npm"
require_relative "bucket/zypper" require_relative "bucket/zypper"
require_relative "bucket/generic" require_relative "bucket/generic"
require_relative "bucket/pip"

View file

@ -0,0 +1,22 @@
module VagrantPlugins
module Cachier
class Bucket
class Pip < Bucket
def self.capability
:pip_cache_dir
end
def install
if guest.capability?(:pip_cache_dir)
if guest_path = guest.capability(:pip_cache_dir)
symlink("#{guest_path}/http", "/tmp/vagrant-cache/#{@name}/http")
symlink("#{guest_path}/wheels", "/tmp/vagrant-cache/#{@name}/wheels")
end
else
@env[:ui].info I18n.t('vagrant_cachier.skipping_bucket', bucket: 'pip')
end
end
end
end
end
end

View file

@ -0,0 +1,20 @@
module VagrantPlugins
module Cachier
module Cap
module Linux
module PipCacheDir
def self.pip_cache_dir(machine)
pip_cache_dir = nil
machine.communicate.tap do |comm|
return unless comm.test('which pip')
comm.execute 'echo $HOME' do |buffer, output|
pip_cache_dir = output.chomp if buffer == :stdout
end
end
return "#{pip_cache_dir}/.cache/pip"
end
end
end
end
end
end

View file

@ -36,6 +36,11 @@ module VagrantPlugins
Cap::Linux::NpmCacheDir Cap::Linux::NpmCacheDir
end end
guest_capability 'linux', 'pip_cache_dir' do
require_relative 'cap/linux/pip_cache_dir'
Cap::Linux::PipCacheDir
end
guest_capability 'debian', 'apt_cache_dir' do guest_capability 'debian', 'apt_cache_dir' do
require_relative 'cap/debian/apt_cache_dir' require_relative 'cap/debian/apt_cache_dir'
Cap::Debian::AptCacheDir Cap::Debian::AptCacheDir