#!/bin/sh -e

LOG_FILE="/var/log/unattended-upgrades-check.log"

# Colors
RED='\033[0;31m'
CYAN='\033[0;36m'
YELLOW='\033[0;33m'
LIGHT_GREEN='\033[0;92m'
BOLD='\033[1m'
NC='\033[0m' # No Color

echo_error() {
  printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2
}

echo_info() {
  printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1"
}

echo_warning() {
  printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1"
}

echo_note() {
  printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$1"
}

# ─< Check if the given command exists silently >─────────────────────────────────────────
command_exists() {
  command -v "$@" >/dev/null 2>&1
}

# ─< Check if the given command exists silently >─────────────────────────────────────────
command_exists() {
  command -v "$@" >/dev/null 2>&1
}

# ─< Check if the user is root and set sudo variable if necessary >───────────────────────
check_root() {
  if [ "$(id -u)" -ne 0 ]; then
    if command_exists sudo; then
      echo_info "User is not root. Using sudo for privileged operations."
      _sudo="sudo"
    else
      echo_error "No sudo found and you're not root! Can't install packages."
      return 1
    fi
  else
    echo_info "Root access confirmed."
    _sudo=""
  fi
}

run_setup() {
  if command_exists unattended-upgrades; then
    $_sudo systemctl enable --now unattended-upgrades || echo_error "Something went wrong! Could not setup the service/autostart"
  fi
}

run_checks() {
  echo_info "Checking if unattended-upgrades is active..."

  if command_exists unattended-upgrades; then
    # if dpkg-query -W -f='${Status}' unattended-upgrades 2>/dev/null | grep -q "install ok installed"; then
    echo_note "unattended-upgrades is already installed."
  else
    echo_warning "unattended-upgrades is not installed. Attempting to install..."
    if command_exists apt-get; then
      if $_sudo apt-get update && $_sudo apt-get install --assume-yes unattended-upgrades; then
        echo_note "unattended-upgrades successfully installed."
      else
        echo_error "Failed to install unattended-upgrades. Exiting."
        exit 1
      fi
    else
      echo_error "apt is not available on this system. Exiting."
      exit 1
    fi
  fi

  # Enable unattended-upgrades
  UNATTENDED_UPGRADES_FILE="/etc/apt/apt.conf.d/50unattended-upgrades"
  if [ -f "$UNATTENDED_UPGRADES_FILE" ]; then
    echo_info "Configuring unattended upgrades in $UNATTENDED_UPGRADES_FILE"
    run_setup || echo_error "Something went wrong when configuring unattended-upgrades.."
  else
    echo_error "Unattended upgrades file not found!"
  fi
}

# Main script
main() {
  echo_info "Starting unattended-upgrades check script..."

  if check_root; then
    run_checks
    # run_setup
  fi
}

main
