From 6093fddfffc75e65ee04cb7ad707a53cf916adc3 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sun, 12 Jun 2016 15:05:13 +0200 Subject: [PATCH] Fall back to reading config from XDG_DATA_DIRS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If there is no configuration file in “$XDG_CONFIG_HOME/update-mirrors”, try looking through directories specified in XDG_CONFIG_DIRS. If XDG_CONFIG_DIRS is not specified, use “/etc/xdg”. Now config files are searched for in this order: - “$XDG_CONFIG_HOME/update-mirrors/config.sh”, or “$HOME/.config/update-mirrors/config.sh” if XDG_CONFIG_DIR is not defined. - For each DIR in XDG_CONFIG_DIRS “$DIR/update-mirrors/config.sh” is tried, or “/etc/xdg/update-mirrors/config.sh” if XDG_CONFIG_DIRS is not defined. --- update-mirrors | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/update-mirrors b/update-mirrors index 62d0ae1..cf27b21 100755 --- a/update-mirrors +++ b/update-mirrors @@ -36,9 +36,29 @@ function make-url () 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 -cfgfile=${XDG_CONFIG_HOME:-"${HOME}/.config"}/update-mirrors/config.sh -[ -x $cfgfile ] && source $cfgfile +etcbases=${XDG_CONFIG_DIRS:-"/etc/xdg"} +cfgbase=${XDG_CONFIG_HOME:-"${HOME}/.config"} +cfgfile="/update-mirrors/config.sh" + +if [[ -x $cfgfile ]]; then + source "${cfgbase}${cfgfile}" +else + load-global-config $etcbases $cfgfile +fi # Check destination if [[ ! -e "$dest" ]] && [[ ! -w "$(dirname "$dest")" ]]; then