]> git.tuebingen.mpg.de Git - gsu.git/commitdiff
gsu: Make command line vars trump config file vars.
authorAndre Noll <maan@systemlinux.org>
Tue, 2 Mar 2010 15:00:23 +0000 (16:00 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Fri, 29 Aug 2014 19:36:07 +0000 (21:36 +0200)
This allows to overrule preferences  given in the config file by
using command line like this

lv=foo snapfsck

which ignores the setting of lv in ~/.snapfsck.rc and uses the value
"foo" instead.

funcs/gsu

index add1be4a4567b759df60edb93e9aa658fdb1c239..d72f54f4faa9dfcf30e4baf8f1608e5972cc4cc5 100644 (file)
--- a/funcs/gsu
+++ b/funcs/gsu
@@ -284,14 +284,20 @@ export -f com_help
 # for errors and parses the config file.
 _gsu_check_options()
 {
-       local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}"
+       local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}" val
+
+       for ((i=0; i < ${#gsu_options[@]}; i++)); do
+               eval "${gsu_options[$i]}"
+               eval val='"'\$$name'"'
+               eval orig_${gsu_config_var_prefix}_$name='"'${val}'"'
+       done
 
        [[ -r "$conf" ]] && source "$conf"
 
        for ((i=0; i < ${#gsu_options[@]}; i++)); do
                local name= option_type= default_value= required=
                local description= help_text=
-               local val
+               local val orig_val
 
                eval "${gsu_options[$i]}"
 
@@ -305,7 +311,12 @@ _gsu_check_options()
                echo "$name" | grep '^[a-zA-Z][a-zA-Z_0123456789]*$' &> /dev/null;
                [[ $? -ne 0 ]] && return
 
-               eval val='"'\$$name'"'
+               eval orig_val='"'\$orig_${gsu_config_var_prefix}_$name'"'
+               if [[ -z "$orig_val" ]]; then
+                       eval val='"'\$$name'"'
+               else
+                       val="$orig_val"
+               fi
                case "$required" in
                true|yes)
                        ret=-$E_GSU_NEED_VALUE