#!/bin/bash



if [[ $LIVE_MODE == "0" ]]; then
  read_param "" "$M_ARCH_ENTER" "$debian_arch" arch menu_var "$(gen_menu < <(echo -e "amd64\ni386\narm64\narmel\narmhf\nmips\nmips64el\nmipsel\nppc64el\ns390x"))"
else
  add_var "declare -gx" arch "$debian_arch"
fi
if [[ $SETUP_MODE == "full auto" ]]; then
	ECHO_MODE=auto
	SET_ECHO_MODE=auto
else
	ECHO_MODE=${G_ECHO_MODE}
fi
##read_param "" "$M_DISTR_VER" "$version_debian" version_debian text
read_param "debian:\n" "${M_DISTR_VER_2}" "${version_debian}" version_debian menu_var "$(gen_menu < <((echo -e "trixie(13)\nbookworm(12)\nbullseye(11)\nbuster(10)\nstretch(9)\njessie(8)\nwheezy(7)\nsqueeze(6)")))"  ## \nwheezy(7)\nsqueeze(6)
add_var "declare -gx" "version_debian" "${version_debian%%(*}"
read_param "remoto or local of repository:\n" "repository:" "${repo_mode}" repo_mode menu_var "$(gen_menu < <((echo -e "remoto\nlocal")))"
if [[ $SETUP_MODE == "manual" ]]; then
	ECHO_MODE=${G_ECHO_MODE}
else
	ECHO_MODE=auto
fi

##  || $version_debian == "stretch" || $version_debian == "jessie"
if [[ $version_debian == "squeeze" || $version_debian == "wheezy" || $version_debian == "jessie" || $version_debian == "stretch" || $version_debian == "buster" || $version_debian == "bullseye"   ]]; then
	debian_mirror="$debian_old_mirror"
	debian_mirror_security="$debian_old_mirror_security"
fi
if [[ $version_debian == "squeeze" || $version_debian == "wheezy" || $version_debian == "jessie"  ]]; then
	if [[ $repo_mode == "remoto" ]]; then
		if [[ -f "/root/debian-archive-removed-keys.gpg" ]]; then
			add_var "declare -gx" "gpgkey" "/root/debian-archive-removed-keys.gpg"
		else
			add_var "declare -gx" "gpgkey" "${old_gpgkey}"
		fi
	fi
	if [[ $version_debian == "jessie" ]]; then
		add_var "declare -gx" "kernel_arch" "586"
	else
		add_var "declare -gx" "kernel_arch" "486"
	fi
fi
#Add all known repos.
add_var "declare -gA" "debian_repos"
add_var "declare -ga" "debian_repos_order"
add_var "declare -ga" "debian_repos_order_cmt"

repos_remoto="debian_repos_order_cmt"
repos_local="debian_repos_order"
if [[ $repo_mode == "remoto" ]]; then
	repos_remoto="debian_repos_order"
	repos_local="debian_repos_order_cmt"
fi

## remoto ----------------------------------
	add_var "declare -gx" "debian_repos[main]" "deb $debian_mirror $version_debian main non-free contrib"
	add_var "declare -gx" "${repos_remoto}[0]" "main"
	if [[ $version_debian != "sid" ]]; then
	    add_var "declare -gx" "debian_repos[updates]" "deb $debian_mirror $version_debian-updates main non-free contrib"
	    add_var "declare -gx" "${repos_remoto}[1]" "updates"
	    add_var "declare -gx" "debian_repos[backports]" "deb $debian_mirror $version_debian-backports main non-free contrib"
	    add_var "declare -gx" "${repos_remoto}[2]" "backports"
	    if [[ $version_debian == "squeeze" || $version_debian == "wheezy" || $version_debian == "jessie" || $version_debian == "stretch" ]]; then
	      add_var "declare -gx" "debian_repos[security]" "deb $debian_mirror_security $version_debian/updates main non-free contrib"
	    else
	      add_var "declare -gx" "debian_repos[security]" "deb $debian_mirror_security $version_debian-security main non-free contrib"
	    fi
	    add_var "declare -gx" "${repos_remoto}[3]" "security"
	fi
	if [[ $version_debian == "squeeze" || $version_debian == "wheezy" || $version_debian == "jessie" || $version_debian == "stretch" ]]; then
		add_var "declare -gx" "${repos_remoto}[1]" " "
		add_var "declare -gx" "${repos_remoto}[2]" " "
		#  add_var "declare -gx" "${repos_remoto}[3]" " "
	fi
	if [[ $version_debian == "buster"  || $version_debian == "bullseye" ]]; then
		add_var "declare -gx" "${repos_remoto}[3]" " "
	fi
## local ----------------------------------
	 AP100_DBG msg_print debug "\${!debian_repos_add[@]}=[${!debian_repos_add[@]}]"
	 eval "local_size=\${#${repos_local}[@]}"
	 AP100_DBG msg_print debug "${repos_local} size=[${local_size}]"
	for repo_name in "${!debian_repos_add[@]}"; do
		AP100_DBG msg_print debug "debian_repos_add[$repo_name]=[${debian_repos_add[$repo_name]}]"
		AP100_DBG msg_print debug "debian_repos[$repo_name]=[$(echo -e "${debian_repos_add[$repo_name]}" | sed "s/\$version_debian/$version_debian/g")]"
		add_var "declare -gx" "debian_repos[$repo_name]" "$(echo -e "${debian_repos_add[$repo_name]}" | sed "s/\$version_debian/$version_debian/g")"
		 eval "local_idx=\${#${repos_local}[@]}"
		add_var "declare -gx" "${repos_local}[${local_idx}]" "$repo_name"
	done
## ----------------------------------

until [[ $repos == "0" ]]; do
  vars_list="$M_LIST_END_OPTION"
  for repo_name in "${debian_repos_order[@]}"; do
    vars_list+="\n$repo_name | ${debian_repos[$repo_name]}"
  done
  NO_VAR=1 NO_HISTORY=1 read_param "$M_DEB_REPO_TEXT\n" "$M_LIST_DIALOG" "0" repos menu "$(gen_menu < <(echo -e "$vars_list"))"
  if [[ $repos != "0" ]]; then
    curr_num=$((${repos#0}-1))
    repo_name="${debian_repos_order[curr_num]}"
    read_param "$M_DEB_REPO_1\n" "$M_DEB_REPO_DIALOG $repo_name" "${debian_repos[$repo_name]}" "debian_repos[$repo_name]" text_empty
    [[ -n "${debian_repos[$repo_name]}" ]] || add_var "unset" "debian_repos[$curr_num]"
  fi
  unset repo_name curr_num vars_list
done
unset repos
if [[ $SETUP_MODE == "manual" ]]; then
	if [[ $kernel == "1" ]]; then
	  read_param "" "$M_KERNEL_TYPE" "$([[ $(detect_vm) || "$kernel_type" == "virtual" ]] && echo 1 || echo 0)" kernel_type menu_var "$(gen_menu < <(echo -e "vanilla\nvirtual"))"
	  [[ -n ${debian_repos[backports]} ]] && read_param "" "$M_DEB_BACKPORTS_KERNEL" "" backports_kernel no_or_yes
	fi
else
	if [[ $kernel == "1" ]]; then
	  read_param "" "$M_KERNEL_TYPE" "${kernel_type}" kernel_type menu_var "$(gen_menu < <(echo -e "vanilla\nvirtual"))"
	  [[ -n ${debian_repos[backports]} ]] && read_param "" "$M_DEB_BACKPORTS_KERNEL" "${backports_kernel:?}" backports_kernel no_or_yes
	fi
fi

if [[ $add_soft == "1" ]]; then
  read_param "" "$M_NETWORKMANAGER" "${networkmanager:?}"  networkmanager yes_or_no
  read_param "" "$M_SSH" "${ssh:?}" ssh yes_or_no
  read_param "" "$M_PULSEAUDIO" "${pulseaudio:?}" pulseaudio yes_or_no
  read_param "" "$M_BLUETOOTH" "${bluetooth:?}" bluetooth yes_or_no
  read_param "" "$M_PRINTERS" "${printers:?}" printers yes_or_no
fi
#if [[ $add_soft == "1" ]]; then
  read_param "" "$M_GRAPH" "${graphics:?}"  graphics yes_or_no
  if [[ $graphics == "1" ]]; then
    read_param "$M_GRAPH_TYPE_M" "$M_GRAPH_TYPE" "${graphics_type:?}" graphics_type menu_var "$(gen_menu < <(echo -e "xorg\nwayland"))"
    read_param "$M_DESKTOP_TYPE_M" "$M_DESKTOP_TYPE" "${desktop_type:?}" desktop_type menu_var "$(gen_menu < <(echo -e "DE\nM"))"
    if [[ $desktop_type != "M" ]]; then
      if [[ $graphics_type == "xorg" ]]; then
        read_param "" "$M_DESKTOP_DE" "${desktop_de:?}" desktop_de menu_var "$(gen_menu < <(echo -e "plasma\nxfce4\ncinnanmon\ngnome"))"
      else
        read_param "" "$M_DESKTOP_DE" "${desktop_de:?}" desktop_de menu_var "$(gen_menu < <(echo -e "plasma\ngnome"))"
      fi
    else
      read_param "" "$M_DESKTOP_MANUAL_PKGS" "${desktop_packages:?}" desktop_packages text_empty
    fi
  fi
#fi

read_param "" "$M_DEB_NO_RECOMMENDS"  "${debian_no_recommends:?}"  debian_no_recommends no_or_yes
[[ $debian_arch == amd64 ]] && read_param "" "$M_MULTILIB"  "${debian_add_i386:?}"  debian_add_i386 yes_or_no
add_var "declare -gx" "SETUPLOG" "${SETUPLOG}"
add_var "declare -gx" "preinstall" "${preinstall}"
read_param "" "$M_PACK"  "${postinstall:?}"  postinstall text_empty




