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

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

if Vagrant::VERSION < "1.8.1"
  puts "This Vagrant environment requires Vagrant 1.8.0 or higher."
  puts "See: https://www.vagrantup.com/downloads.html"
  exit 1
end

Vagrant.configure(2) do |config|

  config.ssh.forward_agent = true

  # start with a Ubuntu install
  config.vm.box = "ubuntu/xenial64"

  # configure root user .profile to avoid 'stdin: is not a tty' messages
  # see https://github.com/mitchellh/vagrant/issues/1673
  config.vm.provision "configure-root-profile", type: "shell" do |s|
    s.privileged = false
    s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \\&\\& mesg n/' /root/.profile"
  end

  # configure vagrant user .profile
  config.vm.provision "configure-user-profile", type: "shell", path: "bootstrap-user-profile.sh", privileged: false

  # install required software
  config.vm.provision "bootstrap-root", type: "shell", path: "bootstrap-root.sh"
  config.vm.provision "bootstrap-user", type: "shell", path: "bootstrap-user.sh", privileged: false

  # forward ports for testing, Rest, playground, commented out nodejs debug port
  config.vm.network "forwarded_port", guest: 7050, host: 7050

  config.vm.network "forwarded_port", guest: 7051, host: 7051
  config.vm.network "forwarded_port", guest: 7052, host: 7052
  config.vm.network "forwarded_port", guest: 7053, host: 7053
  config.vm.network "forwarded_port", guest: 7054, host: 7054

  config.vm.network "forwarded_port", guest: 8051, host: 8051
  config.vm.network "forwarded_port", guest: 8052, host: 8052
  config.vm.network "forwarded_port", guest: 8053, host: 8053
  config.vm.network "forwarded_port", guest: 8054, host: 8054

  config.vm.network "forwarded_port", guest: 9051, host: 9051
  config.vm.network "forwarded_port", guest: 9052, host: 9052
  config.vm.network "forwarded_port", guest: 9053, host: 9053
  config.vm.network "forwarded_port", guest: 9054, host: 9054

  config.vm.network "forwarded_port", guest: 10051, host: 10051
  config.vm.network "forwarded_port", guest: 10052, host: 10052
  config.vm.network "forwarded_port", guest: 10053, host: 10053
  config.vm.network "forwarded_port", guest: 10054, host: 10054


  # disable the default synced folder always tries to set up
  # config.vm.synced_folder ".", "/vagrant", disabled: true

  config.vm.provider :virtualbox do |v|

    # Optionally increase memory allocated to vm (for build tasks)
    v.memory = 4096
  end

  # allow image to use OSX VPN
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end
