From: Simon Ruderich Date: Sun, 22 Feb 2009 02:29:56 +0000 (+0100) Subject: source_config() can load normal configuration files. X-Git-Url: https://ruderich.org/simon/gitweb/?a=commitdiff_plain;h=3e0077f06bf1930070a98562a0594e739760179d;p=config%2Fdotfiles.git source_config() can load normal configuration files. No extension (like hostname; $4) have to be used. See source code for more information. Update tests and add Vim modeline. --- diff --git a/shell/env b/shell/env index af46c8b..6424c58 100644 --- a/shell/env +++ b/shell/env @@ -65,6 +65,7 @@ export LSCOLORS # in $1. # $3: Base name of file in $2, for example "rc" or "env". # $4: Extension for $3, if this file doesn't exist "$1/$3.local" is sourced. +# Can be empty, then no extension is used. # $5: Additional options, set to nolocal to prevent loading of "$1/$3.local" # if "$1/$2/$3.$4" doesn't exist. # @@ -91,13 +92,24 @@ export LSCOLORS # source_config zsh os env $os nolocal # loads os/rc.Darwin # source_config zsh host env $hostname # loads env.local # +# By letting $4 empty normal configuration files can be sourced. A .local can +# still be used. +# +# source_config zsh "" file # loads zsh/file if it exists +# # Doesn't fit perfectly in this file, but this is the best place to make it # available everywhere. # # If DEBUG is set to a non empty value additional debug output is printed. function source_config() { # Path to the file to source and its local counterpart. - source_file=$1/$2/$3.$4 + if [ x$4 != x ]; then + source_file=$1/$2/$3.$4 + # If $4 is empty don't append a trailing dot. This allows source_config() + # to load normal configuration files. + else + source_file=$1/$2/$3 + fi source_file_local=$1/$3.local # Additional debug output. @@ -122,3 +134,5 @@ function source_config() { } source_debug "finished sourcing ~/.shell/env" + +# vim: ft=sh diff --git a/tests/source_config.test b/tests/source_config.test index c8d888e..7237d11 100644 --- a/tests/source_config.test +++ b/tests/source_config.test @@ -14,6 +14,7 @@ mkdir tmp/shell mkdir tmp/zsh tmp/zsh/host tmp/zsh/os echo echo loaded bash/env.zucker > tmp/shell/env.zucker echo echo loaded shell/env.zucker > tmp/shell/env.zucker +echo echo loaded shell/logout > tmp/shell/logout echo echo loaded zsh.env.local > tmp/zsh/env.local echo echo loaded zsh/rc.local > tmp/zsh/rc.local echo echo loaded zsh/host/rc.zucker > tmp/zsh/host/rc.zucker @@ -36,9 +37,16 @@ function tests() { source_config tmp/shell "" env zucker echo -n $source_file$source_file_local + + source_config tmp/shell "" logout + echo -n $source_file$source_file_local + source_config tmp/shell "" doesnt-exist + echo -n $source_file$source_file_local } # Run tests without and with debug output. tests echo DEBUG=1 tests + +# vim: ft=sh diff --git a/tests/source_config.test.out b/tests/source_config.test.out index 3f473a6..693a4af 100644 --- a/tests/source_config.test.out +++ b/tests/source_config.test.out @@ -2,6 +2,7 @@ loaded zsh/os/rc.Darwin loaded zsh/host/rc.zucker loaded zsh.env.local loaded shell/env.zucker +loaded shell/logout source_config(): checking if tmp/zsh/os/rc.Darwin exists source_config(): checking if tmp/zsh/rc.local exists @@ -25,3 +26,10 @@ source_config(): checking if tmp/shell//env.zucker exists source_config(): checking if tmp/shell/env.local exists source_config(): -> sourcing tmp/shell//env.zucker loaded shell/env.zucker +source_config(): checking if tmp/shell//logout exists +source_config(): checking if tmp/shell/logout.local exists +source_config(): -> sourcing tmp/shell//logout +loaded shell/logout +source_config(): checking if tmp/shell//doesnt-exist exists +source_config(): checking if tmp/shell/doesnt-exist.local exists +source_config(): -> neither exists