X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=funcs%2Fgsu;h=f53671774a36e5e4054ad227143f2ce0136b4071;hb=859161e1efa39afbb8368c8cf64f9d310aae69e7;hp=df25bf63c429ca9873024a2dd4e8283be161143c;hpb=2e6e1e17c1fd1e247eb6b458549df92e03536612;p=gsu.git diff --git a/funcs/gsu b/funcs/gsu index df25bf6..f536717 100644 --- a/funcs/gsu +++ b/funcs/gsu @@ -1,6 +1,6 @@ #!/bin/bash # gsu -- the global subcommand utility -# (C) 2006-2009 Andre Noll +# (C) 2006-2010 Andre Noll _gsu_init_errors() { @@ -8,14 +8,13 @@ _gsu_init_errors() GSU_SUCCESS success E_GSU_BAD_COMMAND invalid command E_GSU_NOT_A_NUMBER not a number -E_GSU_SOURCE error in config file -E_GSU_CONFIG bad/missing config file option E_GSU_BAD_CONFIG_VAR invalid config variable E_GSU_NEED_VALUE value required but not given E_GSU_BAD_BOOL bad value for boolian option E_GSU_BAD_OPTION_TYPE invalid option type E_GSU_BAD_ARG_COUNT invalid number of arguments -E_NO_DEFAULT missing default value +E_GSU_EDITOR failed to execute editor +E_GSU_MKDIR failed to create directory $gsu_errors " local a b i=0 @@ -171,13 +170,27 @@ export -f _gsu_print_available_commands export gsu_prefs_txt=" Print the current preferences. -Usage: prefs +Usage: prefs [-e] -Print out a list of all cmt config variables, together with their current value -and the default value." +If -e is given, the config file is opened with the default editor. Without +options, the command prints out a list of all cmt config variables, together +with their current value and the default value." _com_prefs() { - local i + local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}" + + if [[ "$1" = "-e" ]]; then + ret=-$E_GSU_MKDIR + result="${conf%/*}" + mkdir -p "$result" + [[ $? -ne 0 ]] && return + ret=-$E_GSU_EDITOR + result="${EDITOR:-vi}" + "$result" "$conf" + [[ $? -ne 0 ]] && return + ret=$GSU_SUCCESS + return + fi for ((i=0; i < ${#gsu_options[@]}; i++)); do local name= option_type= default_value= required= @@ -432,7 +445,7 @@ gsu() for i in $gsu_cmds; do if test "$arg" = "$i"; then com_$arg "$@" - if test $ret -lt 0; then + if [[ "$ret" -lt 0 ]]; then gsu_err_msg exit 1 fi