diff --git a/lib/vagrant-cachier/bucket.rb b/lib/vagrant-cachier/bucket.rb index 4d392a6..30297e6 100644 --- a/lib/vagrant-cachier/bucket.rb +++ b/lib/vagrant-cachier/bucket.rb @@ -102,3 +102,4 @@ require_relative "bucket/npm" require_relative "bucket/zypper" require_relative "bucket/generic" require_relative "bucket/pip" +require_relative "bucket/mvn" diff --git a/lib/vagrant-cachier/bucket/mvn.rb b/lib/vagrant-cachier/bucket/mvn.rb new file mode 100644 index 0000000..ddd5547 --- /dev/null +++ b/lib/vagrant-cachier/bucket/mvn.rb @@ -0,0 +1,21 @@ +module VagrantPlugins + module Cachier + class Bucket + class Mvn < Bucket + def self.capability + :maven_cache_dir + end + + def install + if guest.capability?(:maven_cache_dir) + guest_path = guest.capability(:maven_cache_dir) + return if @env[:cache_dirs].include?(guest_path) + symlink(guest_path) + else + @env[:ui].info I18n.t('vagrant_cachier.skipping_bucket', bucket: 'Mvn') + end + end + end + end + end +end diff --git a/lib/vagrant-cachier/cap/linux/maven_cache_dir.rb b/lib/vagrant-cachier/cap/linux/maven_cache_dir.rb new file mode 100644 index 0000000..ba46d46 --- /dev/null +++ b/lib/vagrant-cachier/cap/linux/maven_cache_dir.rb @@ -0,0 +1,20 @@ +module VagrantPlugins + module Cachier + module Cap + module Linux + module MavenCacheDir + def self.maven_cache_dir(machine) + maven_cache_dir = nil + machine.communicate.tap do |comm| + return unless comm.test('which mvn') + comm.execute 'echo $HOME' do |buffer, output| + maven_cache_dir = output.chomp if buffer == :stdout + end + end + return "#{maven_cache_dir}/.m2/repository" + end + end + end + end + end +end diff --git a/lib/vagrant-cachier/capabilities.rb b/lib/vagrant-cachier/capabilities.rb index fab48c2..a56918a 100644 --- a/lib/vagrant-cachier/capabilities.rb +++ b/lib/vagrant-cachier/capabilities.rb @@ -40,7 +40,12 @@ module VagrantPlugins require_relative 'cap/linux/pip_cache_dir' Cap::Linux::PipCacheDir end - + + guest_capability 'linux', 'mvn_cache_dir' do + require_relative 'cap/linux/maven_cache_dir' + Cap::Linux::MavenCacheDir + end + guest_capability 'debian', 'apt_cache_dir' do require_relative 'cap/debian/apt_cache_dir' Cap::Debian::AptCacheDir