# -*- mode: ruby -*-
# vi: set ft=ruby :
#
VAGRANTFILE_API_VERSION = "2"

ENV['VAGRANT_DEFAULT_PROVIDER'] ||= 'docker'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  DOCKER_IMAGE_REPO = "mtbvang"

  # UPDATE these project specific details.
  PROJECT_NAME = "<replace>"
  FORWARDED_PORT_OFFSET = <replace>
  GUEST_APP_PORT = <replace>
  FORWARDED_HOST_APP_PORT = GUEST_APP_PORT + FORWARDED_PORT_OFFSET

  GUEST_MONGO_PORT = 27017
  FORWARDED_HOST_MONGO_PORT = GUEST_MONGO_PORT + FORWARDED_PORT_OFFSET

  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
  end

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
  config.vm.provision "file", source: "~/.ssh/config", destination: ".ssh/config"
  #config.vm.provision "file", source: "~/.ssh/*", destination: ".ssh/"
  config.vm.provision "file", source: "vagrant/provision/ubuntu/.bash_aliases", destination: ".bash_aliases"
  config.vm.provision "file", source: "vagrant/provision/ubuntu/.bashrc", destination: ".bashrc"

  config.vm.provision "consul", type: "shell" do |s|
    s.path = "vagrant/provision/ubuntu/consul.sh"
    s.args = ""
  end
  
  config.vm.define "#{PROJECT_NAME}-mongo" do |d|
    d.vm.hostname = "#{PROJECT_NAME}.mongo.local"
    d.vm.network "forwarded_port", guest: GUEST_MONGO_PORT, host: FORWARDED_HOST_MONGO_PORT

    d.vm.provision "shell", inline: "nohup mongod &"

    d.vm.provider "docker" do |d|
      d.image   = "#{DOCKER_IMAGE_REPO}/vagrant-mongo:3"
      d.has_ssh = true
      d.privileged = true
      d.name = "#{PROJECT_NAME}-mongo"
    end
  end

  config.vm.define "#{PROJECT_NAME}-app" do |d|
    d.vm.hostname = "#{PROJECT_NAME}.app.local"
    d.vm.network "forwarded_port", guest: GUEST_APP_PORT, host: FORWARDED_HOST_APP_PORT

    d.vm.provision "dotfiles", type: "shell" do |s|
      s.path = "vagrant/provision/ubuntu/dotfiles.sh"
    end

    d.vm.provider "docker" do |d|
      d.image   = "#{DOCKER_IMAGE_REPO}/vagrant-node:wheezy"
      d.has_ssh = true
      d.privileged = true
      d.name = "#{PROJECT_NAME}-app"
      d.link "#{PROJECT_NAME}-mongo:#{PROJECT_NAME}-mongo"
    end
  end

end
