WINDOWS_BOX = ENV.fetch("COVENANT_WINDOWS_BOX", "gusztavvargadr/windows-11")
WINDOWS_BOX_VERSION = ENV["COVENANT_WINDOWS_BOX_VERSION"]
VM_NAME = ENV.fetch("COVENANT_VM_NAME", "covenant-setup-windows")
VM_MEMORY = ENV.fetch("COVENANT_VM_MEMORY", "6144")
VM_CPUS = ENV.fetch("COVENANT_VM_CPUS", "4")
WINRM_USERNAME = ENV.fetch("COVENANT_WINRM_USERNAME", "vagrant")
WINRM_PASSWORD = ENV.fetch("COVENANT_WINRM_PASSWORD", "vagrant")
HYPERV_SWITCH = ENV.fetch("COVENANT_HYPERV_SWITCH", "Default Switch")

Vagrant.configure("2") do |config|
  config.vm.box = WINDOWS_BOX
  if WINDOWS_BOX_VERSION && !WINDOWS_BOX_VERSION.empty?
    config.vm.box_version = WINDOWS_BOX_VERSION
  end

  config.vm.hostname = VM_NAME
  config.vm.guest = :windows
  config.vm.communicator = "winrm"
  config.vm.boot_timeout = ENV.fetch("COVENANT_BOOT_TIMEOUT", "1800").to_i
  config.vm.graceful_halt_timeout = 180
  config.vm.box_check_update = false
  config.vm.network "public_network", bridge: HYPERV_SWITCH
  config.vm.synced_folder ".", "/vagrant", disabled: true

  config.winrm.username = WINRM_USERNAME
  config.winrm.password = WINRM_PASSWORD
  config.winrm.retry_limit = 60
  config.winrm.retry_delay = 10
  config.winrm.timeout = 1800

  config.vm.provider "hyperv" do |h|
    h.vmname = VM_NAME
    h.memory = VM_MEMORY.to_i
    h.cpus = VM_CPUS.to_i
  end
end
