Method: Vagrant::Action::VM::CleanMachineFolder#clean_machine_folder

Defined in:
lib/vagrant/action/vm/clean_machine_folder.rb

#clean_machine_folder(machine_folder) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/vagrant/action/vm/clean_machine_folder.rb', line 20

def clean_machine_folder(machine_folder)
  folder = File.join(machine_folder, "*")

  # Small safeguard against potentially unwanted rm-rf, since the default
  # machine folder will typically always be greater than 10 characters long.
  # For users with it < 10, out of luck?
  return if folder.length < 10

  Dir[folder].each do |f|
    next unless File.directory?(f)

    keep = Dir["#{f}/**/*"].find do |d|
      # Find a file that doesn't have ".xml-prev" as the suffix,
      # which signals that we want to keep this folder
      File.file?(d) && !(File.basename(d) =~ /\.vbox-prev$/)
    end

    FileUtils.rm_rf(f) if !keep
  end
end