#!/bin/bash # Functions function fold() { /usr/bin/fold --spaces --width="$(tput cols)"; } function _urlify-1() { local items=($@) for item in "${items[@]:1}"; do echo "$1=${item}" done } function urlify() { local uitems=($(_urlify-1 "$@")) local IFS="&" echo "${uitems[*]}" } function make-url() { local countryparams local protocolparams local ipparams local statusparams countryparams=$(urlify country "${countries[@]}") protocolparams=$(urlify protocol "${protocols[@]}") ipparams=$(urlify ip_version "${ip_versions[@]}") statusparams=$(urlify use_mirror_status "$use_mirror_status") echo "${url}/?${countryparams}&${protocolparams}&${ipparams}&${statusparams}" } function load-global-config() { local IFS=":" for dir in $1; do local cfgfile="${dir}${2}" if [[ -x $cfgfile ]]; then source "$cfgfile" return fi done } # Load config file etcbases=${XDG_CONFIG_DIRS:-"/etc/xdg"} cfgbase=${XDG_CONFIG_HOME:-"${HOME}/.config"} cfgfile="/update-mirrors/config.sh" if [[ -x "${cfgbase}${cfgfile}" ]]; then source "${cfgbase}${cfgfile}" else load-global-config "$etcbases" $cfgfile fi # Check destination if [[ ! -e $dest ]] && [[ ! -w "$(dirname "$dest")" ]]; then echo "Need write permission for $(dirname "$dest") to create \ ${dest}. Perhaps you should use sudo." | fold >&2 exit 1 elif [[ -e $dest ]] && [[ ! -w $dest ]]; then echo "Need write permission for ${dest}, perhaps you should use \ sudo." | fold >&2 exit 1 fi # Download, ready, output mirrorlist=$(curl --no-progress-meter --location "$(make-url)") if [[ $? -eq 0 ]]; then echo "$mirrorlist" | sed 's/^#\([^#].*\)/\1/' > "$dest" echo "Saved in ${dest}" else echo "Couldn't load mirrorlist, not updating." fi if [[ -f "${dest}.pacnew" ]]; then rm "${dest}.pacnew" echo "Removed ${dest}.pacnew" fi