# -*- mode: ruby -*-
# vi: set ft=ruby :

def local_cache(box_name)
  cache_dir = File.join(File.expand_path(Vagrant::Environment::DEFAULT_HOME),
                        'cache',
                        'apt',
                        box_name)
  partial_dir = File.join(cache_dir, 'partial')
  FileUtils.mkdir_p(partial_dir) unless File.exists? partial_dir
  cache_dir
end

Vagrant.require_plugin 'vagrant-lxc'

Vagrant.configure("2") do |config|
  config.vm.box      = "lxc-quantal64-2013-03-08"
  config.vm.box_url  = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-08.box'
  config.vm.hostname = "lxc-quantal64"

  config.vm.synced_folder "../", "/vagrant", name: 'vagrant-root'

  cache_dir = local_cache(config.vm.box)
  config.vm.synced_folder cache_dir,
                          "/var/cache/apt/archives/",
                          name: "vagrant-cache"

  config.vm.provider :lxc do |lxc|
    # Required to boot nested containers
    lxc.start_opts << 'lxc.aa_profile=unconfined'
  end

  config.vm.provision :shell, inline: '
    if ! `which puppet > /dev/null`; then
      sudo apt-get update &&
      sudo apt-get install puppet -y
    fi'

  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "."
    puppet.manifest_file  = "site.pp"
    # Pass DEBUG=1 to vagrant commands if you want to make some debugging noise
    puppet.options << [ '--verbose', '--debug' ] if ENV['DEBUG'] == '1'
  end
end