Class: Vagrant::Cachier::Action::Clean

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-cachier/action.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, env) ⇒ Clean

Returns a new instance of Clean.



55
56
57
58
# File 'lib/vagrant-cachier/action.rb', line 55

def initialize(app, env)
  @app    = app
  @logger = Log4r::Logger.new("vagrant::cachier::action::clean")
end

Instance Method Details

#call(env) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/vagrant-cachier/action.rb', line 60

def call(env)
  @env = env

  if env[:machine].state.id == :running && symlinks.any?
    env[:ui].info 'Removing cache buckets symlinks...'
    symlinks.each do |symlink|
      remove_symlink symlink
    end

    File.delete env[:machine].data_dir.join('cache_dirs').to_s
  end

  @app.call env
end


80
81
82
83
84
85
# File 'lib/vagrant-cachier/action.rb', line 80

def remove_symlink(symlink)
  if @env[:machine].communicate.test("test -L #{symlink}")
    @logger.debug "Removing symlink for '#{symlink}'"
    @env[:machine].communicate.sudo("unlink #{symlink}")
  end
end


75
76
77
78
# File 'lib/vagrant-cachier/action.rb', line 75

def symlinks
  # TODO: Check if file exists instead of a blank rescue
  @symlinks ||= @env[:machine].data_dir.join('cache_dirs').read.split rescue []
end