#!/usr/bin/env bash

set -euo pipefail
IFS=$'\n\t'

pacman_dir="/etc/pacman.d"
mirror_file="${pacman_dir}/mirrorlist"
mirror_pacnew="${mirror_file}.pacnew"
mirror_orig="${mirror_file}.orig"
mirror_tmp="/tmp/mirrorlist.tmp"
rank_util="rankmirrors"

if ! hash "$rank_util" 2>/dev/null; then
    echo "$rank_util: command not found" >&2
    echo "You may need to install the 'pacman-contrib' package."  >&2
    exit 1
fi

if [ -f "$mirror_pacnew" ]; then
    echo "Using $mirror_pacnew"
    mv "$mirror_pacnew" "$mirror_orig"
fi

if [ ! -f "$mirror_orig" ]; then
    echo "$mirror_orig: file not found" >&2
    exit 1
fi

awk '/^## France$/{f=1}f==0{next}/^$/{exit}{print substr($0, 2)}' "$mirror_orig" >"$mirror_tmp"
"$rank_util" -n 6 "$mirror_tmp" >"$mirror_file"
rm -f "$mirror_tmp"
pacman -Syy