# ! cron '0 0 * * 0'

%w(. ../config ../../config).each do |dir| d = File.join(__dir__, dir, 'libraries')
  Dir[File.join(d, '**', '*.rb')].sort.each { |f| require f } if Dir.exist?(d)
end
ctx = { "host" => ENV["HOST"], "login" => ENV["LOGIN"], "password" => ENV["PASSWORD"] }

def update_container(id, ip)
  script = <<~SHELL
    set -e; export DEBIAN_FRONTEND=noninteractive
    apt-get update && apt-get -y dist-upgrade && apt-get autoremove -y && apt-get clean
    if [ -f /var/run/reboot-required ]; then
      /sbin/reboot
    fi
  SHELL

  IO.popen([ "ssh", "-o", "ConnectTimeout=10", "-o", "BatchMode=yes", "-o", "StrictHostKeyChecking=no",
    "-i", "/share/.keys/#{id}", "config@#{ip}", "sudo sh" ], "w") { |pipe| pipe.puts script }
end

Utils.proxmox(ctx, 'lxc').each do |container| id = container['vmid']
  config = Utils.proxmox(ctx, "lxc/#{id}/config")
  update_container(id, (config['net0'] && config['net0'][/ip=(\d+\.\d+\.\d+\.\d+)/, 1]))
end