Vagrantfile
f4d17450
 # -*- mode: ruby -*-
 # vi: set ft=ruby :
 
08594edd
 module OS
   def OS.windows?
     (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
   end
 
   def OS.mac?
    (/darwin/ =~ RUBY_PLATFORM) != nil
   end
 
   def OS.unix?
     !OS.windows?
   end
 
   def OS.linux?
     OS.unix? and not OS.mac?
   end
 end
 
 ENV['VAGRANT_DEFAULT_PROVIDER'] ||= OS.mac? ? 'vmware_fusion' : "vmware_workstation"
 
 fusion_path="/Applications/VMware Fusion.app/Contents/Library"
 if File.directory?(fusion_path)
   ENV['PATH'] = "#{fusion_path}:#{ENV['PATH']}"
 end
 
 appcatalyst_path="/opt/vmware/appcatalyst/libexec"
 if File.directory?(appcatalyst_path)
   ENV['PATH'] = "#{appcatalyst_path}:#{ENV['PATH']}"
 end
 
 # Hey Now! thanks StackOverflow: http://stackoverflow.com/a/28801317/1233435
 req_plugins = %w(vagrant-triggers)
 
 if OS.mac?
   req_plugins << "vagrant-vmware-fusion" if File.directory?(fusion_path)
   req_plugins << "vagrant-vmware-appcatalyst" if File.directory?(appcatalyst_path)
 else
   req_plugins << "vagrant-vmware-workstation"
 end
 
 # Cycle through the required plugins and install what's missing.
 plugins_install = req_plugins.select { |plugin| !Vagrant.has_plugin? plugin }
 licensed_plugins = plugins_install.select { |plugin| plugin =~ /vagrant-vmware-(?:fusion|workstation)$/ }
 licensed_plugins.each do |plugin|
   unless File.exist? "#{ENV["VAGRANT_VMWARE_LICENSE_FILE"]||"./#{plugin}.lic"}"
     abort "Failed to configure license, you can configure the path with VAGRANT_VMWARE_LICENSE_FILE"
   end
 end
 
 unless plugins_install.empty?
   puts "Installing plugins: #{plugins_install.join(' ')}"
   if system "vagrant plugin install #{plugins_install.join(' ')}"
     exec "vagrant #{ARGV.join(' ')}"
   else
     abort 'Installation of one or more plugins has failed. Aborting.'
   end
 end
 
 licensed_plugins.each do |plugin|
   unless system "vagrant plugin license #{plugin} #{ENV["VAGRANT_VMWARE_LICENSE_FILE"]||"./#{plugin}.lic"}"
     abort "Failed to configure license, you can configure the path with VAGRANT_VMWARE_LICENSE_FILE"
   end
 end
 
f4d17450
 VAGRANTFILE_API_VERSION = '2'
 
 # VM configuration, as we're compiling an OS from scratch, make sure the
 # defaults are sensible.
 vm_config = { ram: 2048, cpu: 2 }
 
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
   # the photon-build-machine box is built using packer,
   # see support/packer-templates/photon-build-machine.json
   config.vm.box = 'photon-build-machine'
 
   config.vm.box_check_update = false
 
08594edd
   %w(vmware_fusion vmware_workstation vmware_appcatalyst).each do |p|
     config.vm.provider p do |v|
       v.vmx['memsize'] = vm_config[:ram]
       v.vmx['numvcpus'] = vm_config[:cpu]
       v.vmx['ethernet0.virtualDev'] = 'vmxnet3'
       v.vmx['vhv.enable'] = 'true'
     end
f4d17450
   end
 
   # Sync the current folder as /workspaces/photon using rsync.
   config.vm.synced_folder('.', '/workspaces/photon', type: 'rsync',
                           rsync__exclude: ['.git/', 'stage/']) # exclude .git and stage from sync.
 
   # Share the host's source root directory to copy back the build artifacts
   config.vm.synced_folder('.', '/workspaces/host_srcroot')
 
   # Build a new ISO and cleanup the machine afterward
   config.vm.provision('shell', path: 'support/vagrant/photon-build-machine-init.sh')
 end