autoload -Uz log_debug log_group

log_group 'Check Ubuntu build requirements'
log_debug 'Checking Ubuntu distribution name and version...'

if [[ -f /etc/os-release ]] {
  local dist_name
  local dist_version
  read -r dist_name dist_version <<< "$(source /etc/os-release; print "${NAME} ${VERSION_ID}")"

  if [[ ${dist_name} != Ubuntu ]] {
    log_error "Not running on an Ubuntu distribution. Aborting"
    log_group
    return 2
  }

  autoload -Uz is-at-least && if ! is-at-least 24.04 ${dist_version}; then
    log_error "Not running on a recent-enough Ubuntu distribution. Aborting"
    log_group
    return 2
  fi
} else {
  log_error "Unable to determine local Linux distribution, but Ubuntu is required. Aborting"
  log_group
  return 2
}

local -a dependencies=("${(fA)$(<${SCRIPT_HOME}/.Aptfile)}")
local -a install_list
local binary

sudo apt-get update -qq

for dependency (${dependencies}) {
  local -a tokens=(${=dependency//(,|:|\')/})

  if [[ ! ${tokens[1]} == package ]] continue

  if [[ ${#tokens} -gt 2 && ${tokens[3]} == bin ]] {
    binary=${tokens[4]}
  } else {
    binary=${tokens[2]}
  }

  if (( ! ${+commands[${binary}]} )) install_list+=(${tokens[2]})
}

log_debug "List of dependencies to install: ${install_list}"
if (( #install_list )) {
  sudo apt-get -y --no-install-recommends install ${install_list}
}

rehash
log_group
