class Tupperware::Base

Public Class Methods

new(options = {}, kitchen_config = Kitchen::Config.new) click to toggle source
# File lib/tupperware.rb, line 41
def initialize(options = {}, kitchen_config = Kitchen::Config.new)
  @kitchen_config = kitchen_config
  @options = options
  @supported_drivers = {'vagrant' => VagrantVirtualBox}
end

Public Instance Methods

check_driver() click to toggle source
# File lib/tupperware.rb, line 47
def check_driver
  hash = @kitchen_config.loader.read
  driver = hash[:driver][:name]
  unless @supported_drivers.has_key?(driver)
    puts "#{driver} is not yet supported"
    exit
  end
  return @supported_drivers[driver]
end
package() click to toggle source
# File lib/tupperware.rb, line 77
def package
  cls = check_driver
  instance = nil
  if cls == VagrantVirtualBox
    if @options[:instance]
      @kitchen_config.instances.each do |i|
        if i.name.to_s == @options[:instance]
          instance = i
          break
        end
      end
      unless instance
        puts "#{@options[:instance]} is not a valid kitchen instance"
        exit 1
      end
      instance_name = instance.name.to_s
      puts "\n*** Converging #{instance_name} ***\n"
      instance.converge
      packager = VagrantVirtualBox.new(@options, @kitchen_config)
      packager.provision_local_box(instance)
      packager.halt(instance_name)
      packager.package(instance_name)
      instance.destroy
      vagrant_finish(instance_name)
    else
      packager = VagrantVirtualBox.new(@options, @kitchen_config)
      packager.kitchen_config.instances.each do |i|
        instance_name = i.name.to_s
        puts "\n*** Converging #{i.name.to_s} ***\n"
        i.converge
        packager.provision_local_box(i)
        packager.halt(i.name.to_s)
        packager.package(i.name.to_s)
        i.destroy
        vagrant_finish(instance_name)
      end
    end
  end
end
vagrant_finish(instance_name) click to toggle source
# File lib/tupperware.rb, line 57
    def vagrant_finish(instance_name)
      done = <<-DONE 


    Your vagrant box file is named #{instance_name}.box. Import it by
    running:

    vagrant box add --name NAME #{instance_name}.box

    Run the following command for more information on importing vagrant
    boxes:

    vagrant box add -h


          DONE
      puts done

    end