diff options
author | Tom Willemse | 2016-06-12 15:05:13 +0200 |
---|---|---|
committer | Tom Willemse | 2016-06-12 15:05:13 +0200 |
commit | 6093fddfffc75e65ee04cb7ad707a53cf916adc3 (patch) | |
tree | 624b499a0a895fd727eea4489cddab014a0829c7 | |
parent | a5d3cbbe2c395af111ca97b6391872860feabc81 (diff) | |
download | update-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-x | update-mirrors | 24 |
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 |