Vagrant.configure(2) do |config|
    config.vm.provider :virtualbox do |vb|
        vb.memory = 2048
        vb.cpus = 8
    end

    config.vm.box = "bento/ubuntu-16.04"
    config.vm.box_version = "2.2.9";

    config.vm.provider :virtualbox do |vb|
        vb.name = "pgbackrest-test"
    end

    # Provision the VM
    config.vm.provision "shell", inline: <<-SHELL
        echo 'Build Begin' && date

        # Suppress "dpkg-reconfigure: unable to re-open stdin: No file or directory" warning
        export DEBIAN_FRONTEND=noninteractive

        # Update Apt
        echo 'Update Apt' && date
        apt-get update

        # Install Docker
        echo 'Install Docker' && date
        apt-get install -y apt-transport-https ca-certificates
        apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
        echo 'deb https://apt.dockerproject.org/repo ubuntu-xenial main' > /etc/apt/sources.list.d/docker.list
        apt-get update
        apt-get install -y linux-image-extra-$(uname -r)
        apt-get install -y docker-engine
        service docker start
        sudo usermod -aG docker vagrant

        # Install Perl modules
        echo 'Install Perl Modules' && date
        apt-get install -y libdbd-pg-perl libxml-checker-perl libperl-critic-perl

        # Install utilities
        echo 'Install Utilities' && date
        apt-get install -y vim htop

        # Install TeX Live
        echo 'Install TeX Live' && date
        apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended
        apt-get install -y texlive-font-utils

        # Create backrest user and postgres group
        echo 'Create Postgres Group & pgBackRest User' && date
        groupadd -g5000 postgres
        adduser --uid=5001 --ingroup=postgres --disabled-password --gecos "" backrest

        # Make postgres the primary group for vagrant user (and preserve vagrant group)
        echo 'Add Vagrant User to Postgres Group' && date
        usermod -g postgres vagrant
        usermod -a -G vagrant vagrant

        # Build VM images
        echo 'Build VM Images' && date
        rm -f /backrest/test/.vagrant/docker/*
        sudo su - vagrant -c '/backrest/test/test.pl --vm-build'

        echo 'Build End' && date
    SHELL

  # Don't share the default vagrant folder
  config.vm.synced_folder ".", "/vagrant", disabled: true

  # Mount backrest path for testing
  config.vm.synced_folder "..", "/backrest"
end
