#!/bin/bash

[[ -f "./lib/distr/${distr:?}/customize_cst.sh" ]] && source "./lib/distr/${distr:?}/customize_cst.sh"

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=dialog
fi
##read_param "" "$M_DISTR_VER" "$version_ubuntu" version_ubuntu text
read_param "$M_DISTR_1:\n" "$M_DISTR_VER" "${version_ubuntu}" version_ubuntu menu_var "$(gen_menu < <((echo -e "bionic(18.04)\nartful(17.10)\nzesty(17.04)\nyakkety(16.10)\nxenial(16.04)\nwily(15.10)")))"  ## \nwheezy(7)\nsqueeze(6)
add_var "declare -gx" "version_ubuntu" "${version_ubuntu%%(*}"
read_param "$M_DISTR_1:\n" "$M_DISTR_VER" "${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_ubuntu == "jessie"
## if ! [[ $version_ubuntu == "bullseye" || $version_ubuntu == "buster"  || $version_ubuntu == "stretch"   ]]; then
## 	ubuntu_mirror="$debian_old_mirror"
## fi
## if ! [[ $version_ubuntu == "bullseye" || $version_ubuntu == "buster"  || $version_ubuntu == "stretch"  ]]; then
## 	if [[ $repo_mode == "remoto" ]]; then
## 		add_var "declare -gx" "gpgkey" "${old_gpgkey}"
## 	fi
## 	add_var "declare -gx" "kernel_arch" "586"
## fi
#Add all known repos.
add_var "declare -gA" "debian_repos"
add_var "declare -ga" "debian_repos_order"
if [[ $repo_mode == "remoto" ]]; then
	add_var "declare -gx" "debian_repos[main1]" "deb $ubuntu_mirror $version_ubuntu main restricted"
	add_var "declare -gx" "debian_repos_order[0]" "main1"
	add_var "declare -gx" "debian_repos[main2]" "deb $ubuntu_mirror $version_ubuntu-updates main restricted"
	add_var "declare -gx" "debian_repos_order[1]" "main2"
	if [[ $version_ubuntu != "sid" ]]; then
	    add_var "declare -gx" "debian_repos[universe1]" "deb $ubuntu_mirror $version_ubuntu universe"
	    add_var "declare -gx" "debian_repos_order[2]" "universe1"
	    add_var "declare -gx" "debian_repos[universe2]" "deb $ubuntu_mirror $version_ubuntu-updates universe"
	    add_var "declare -gx" "debian_repos_order[3]" "universe2"
	    
	    add_var "declare -gx" "debian_repos[multiverse1]" "deb $ubuntu_mirror $version_ubuntu multiverse"
	    add_var "declare -gx" "debian_repos_order[4]" "multiverse1"
	    add_var "declare -gx" "debian_repos[multiverse2]" "deb $ubuntu_mirror $version_ubuntu-updates multiverse"
	    add_var "declare -gx" "debian_repos_order[5]" "multiverse2"

	    add_var "declare -gx" "debian_repos[backports]" "deb $ubuntu_mirror $version_ubuntu-backports main restricted universe multiverse"
	    add_var "declare -gx" "debian_repos_order[6]" "backports"
	    # if ! [[ $version_ubuntu == "jessie" || $version_ubuntu == "stretch" ]]; then
	    #   add_var "declare -gx" "debian_repos[security]" "deb $ubuntu_mirror_security $version_ubuntu-security main non-free contrib"
	    # else
	    #   add_var "declare -gx" "debian_repos[security]" "deb $ubuntu_mirror_security $version_ubuntu/updates main non-free contrib"
	    # fi
	    
	    ##add_var "declare -gx" "debian_repos[security1]" "deb $ubuntu_mirror_security $version_ubuntu-security main restricted"
	    ##add_var "declare -gx" "debian_repos_order[7]" "security1"
	    ##add_var "declare -gx" "debian_repos[security2]" "deb $ubuntu_mirror_security $version_ubuntu-security universe"
	    ##add_var "declare -gx" "debian_repos_order[8]" "security2"
	    ##add_var "declare -gx" "debian_repos[security3]" "deb $ubuntu_mirror_security $version_ubuntu-security multiverse"
	    ##add_var "declare -gx" "debian_repos_order[9]" "security3"
	fi
	#  if ! [[ $version_ubuntu == "bullseye" || $version_ubuntu == "buster" ]]; then
	#  	add_var "declare -gx" "debian_repos_order[1]" " "
	#  	add_var "declare -gx" "debian_repos_order[2]" " "
	#  	add_var "declare -gx" "debian_repos_order[3]" " "
	#  fi
else
	 AP100_DBG msg_print debug "\${!debian_repos_add[@]}=[${!debian_repos_add[@]}]"
	 AP100_DBG msg_print debug "\${#debian_repos_order[@]}=[${#debian_repos_order[@]}]"
	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_ubuntu/$version_ubuntu/g")]"
	  add_var "declare -gx" "debian_repos[$repo_name]" "$(echo -e "${debian_repos_add[$repo_name]}" | sed "s/\$version_ubuntu/$version_ubuntu/g")"
	  add_var "declare -gx" "debian_repos_order[${#debian_repos_order[@]}]" "$repo_name"
	done
fi

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




