Sha256: de38e4fa22f6e88edbf09b8612216f29737199504eba93ae564995386c9ad701

Contents?: true

Size: 1.29 KB

Versions: 40

Compression:

Stored size: 1.29 KB

Contents

require 'fileutils'

module Vagrant
  module Action
    module VM
      # Cleans up the VirtualBox machine folder for any ".xml-prev"
      # files which VirtualBox may have left over. This is a bug in
      # VirtualBox. As soon as this is fixed, this middleware can and
      # will be removed.
      class CleanMachineFolder
        def initialize(app, env)
          @app = app
        end

        def call(env)
          clean_machine_folder(env[:vm].driver.read_machine_folder)
          @app.call(env)
        end

        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
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 6 rubygems

Version Path
bmhatfield-vagrant-1.0.10 lib/vagrant/action/vm/clean_machine_folder.rb
bmhatfield-vagrant-1.0.9 lib/vagrant/action/vm/clean_machine_folder.rb
bmhatfield-vagrant-1.0.8 lib/vagrant/action/vm/clean_machine_folder.rb
bmhatfield-vagrant-1.0.7 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.7 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.6 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.5 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.4 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.3 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.2 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.1 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-1.0.0 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.99.2 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.99.1 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.7 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.6 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.5 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.4 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.3 lib/vagrant/action/vm/clean_machine_folder.rb
vagrantup-0.9.2 lib/vagrant/action/vm/clean_machine_folder.rb