diff --git a/archfi b/archfi index 7bf0b84..d34a86e 100644 --- a/archfi +++ b/archfi @@ -725,6 +725,7 @@ installmenu(){ nextitem=${1} fi options=() + options+=("${txtselectmirrorsbycountry}" "(${txtoptional})") options+=("${txteditmirrorlist}" "(${txtoptional})") options+=("${txtinstallarchlinux}" "pacstrap base kernel") options+=("${txtinstallfirmware}" "(${txtoptional}) pacstrap linux-firmware") @@ -734,6 +735,10 @@ installmenu(){ 3>&1 1>&2 2>&3) if [ "$?" = "0" ]; then case ${sel} in + "${txtselectmirrorsbycountry}") + selectmirrorsbycountry + nextitem="${txtinstallarchlinux}" + ;; "${txteditmirrorlist}") ${EDITOR} /etc/pacman.d/mirrorlist nextitem="${txtinstallarchlinux}" @@ -758,6 +763,25 @@ installmenu(){ fi } +selectmirrorsbycountry() { + if [[ ! -f /etc/pacman.d/mirrorlist.backup ]]; then + cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup + fi + items=$( sed -n "/^##.*/N; {s/^## \(.*\)\nServer.*/\1/p}" < /etc/pacman.d/mirrorlist.backup | sort -u ) + options=() + IFS_ORIG=$IFS + IFS=$'\n' + for item in ${items}; do + options+=("${item}" "") + done + IFS=$IFS_ORIG + country=$(whiptail --backtitle "${APPTITLE}" --title "${txtselectcountry}" --menu "" 0 0 0 "${options[@]}" 3>&1 1>&2 2>&3) + if [ "$?" != "0" ]; then + return 1 + fi + sed "s/^\(Server .*\)/\#\1/;/^## $country/N; {s/^\(## .*\n\)\#Server \(.*\)/\1Server \2/}" < /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist +} + installbase(){ clear pkgs="base" @@ -1746,6 +1770,8 @@ loadstrings(){ txtarchinstallmenu="Arch Install Menu" + txtselectmirrorsbycountry="Select mirrors by country" + txtselectcountry="Select country" txteditmirrorlist="Edit mirrorlist" txtinstallarchlinux="Install Arch Linux" txtinstallfirmware="Install Firmware"