# vim: set ft=ruby:
# frozen_string_literal: true

def find_ansible_cfg
  path = Pathname.new(Dir.pwd)
  until path.root?
    ansible_cfg = path + 'ansible.cfg'
    return path if ansible_cfg.exist?
    path = path.parent
  end
  nil # return nil if not found
end

Vagrant.configure('2') do |config|
  config.vm.define 'wizard'

  if ARGV.any? { |arg| arg == 'up' || arg == 'provision' }
    unless ENV['DB_BACKEND']
      $stderr.puts "\e[31mThe DB_BACKEND environment variable is not defined. Please set up the environment and try again.\e[0m"
      exit 1
    end
  end

  config.vm.provision 'shell', path: 'bootstrap' if File.exist?('bootstrap')
  config.vm.synced_folder '.', '/vagrant', disabled: true

  config.vm.provider :libvirt do |libvirt|
    libvirt.cpus = 4
    libvirt.memory = 4096
  end

  path = find_ansible_cfg
  if !path
    puts "ansible.cfg not found"
  end

  config.vm.provision 'ansible' do |ansible|
    ansible.config_file = (path + 'ansible.cfg').to_s
    ansible.playbook = (path + 'provision_dependencies.yml').to_s
    ansible.compatibility_mode = "2.0"
  end

  config.vm.provision 'ansible' do |ansible|
    ansible.config_file = (path + 'ansible.cfg').to_s
    ansible.playbook = (path + 'provision_test_suite.yml').to_s
    ansible.compatibility_mode = "2.0"
  end

  config.vm.provision 'ansible' do |ansible|
    ansible.config_file = (path + 'ansible.cfg').to_s
    ansible.playbook = (path + 'prepare_tests.yml').to_s
    ansible.compatibility_mode = "2.0"
  end

  config.vm.provision 'ansible' do |ansible|
    ansible.config_file = (path + 'ansible.cfg').to_s
    ansible.playbook = (path + 'debug_tools.yml').to_s
    ansible.compatibility_mode = "2.0"
  end

  config.vm.provision 'ansible' do |ansible|
    ansible.config_file = (path + 'ansible.cfg').to_s
    ansible.playbook = (path + 'run_wizard_tests.yml').to_s
    ansible.compatibility_mode = "2.0"
  end

end
