aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2016-06-12 15:05:13 +0200
committerGravatar Tom Willemse2016-06-12 15:05:13 +0200
commit6093fddfffc75e65ee04cb7ad707a53cf916adc3 (patch)
tree624b499a0a895fd727eea4489cddab014a0829c7
parenta5d3cbbe2c395af111ca97b6391872860feabc81 (diff)
downloadupdate-mirrors-6093fddfffc75e65ee04cb7ad707a53cf916adc3.tar.gz
update-mirrors-6093fddfffc75e65ee04cb7ad707a53cf916adc3.zip
Fall back to reading config from XDG_DATA_DIRS
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.
-rwxr-xr-xupdate-mirrors24
1 files 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