Unify gsu_dir handling.
authorAndre Noll <maan@tuebingen.mpg.de>
Sun, 31 Aug 2014 19:01:02 +0000 (21:01 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Tue, 2 Sep 2014 19:45:37 +0000 (21:45 +0200)
The three locations which include the common part of gsu need to know
the gsu installation directory. Currently we rely on the application
to set $gsu_dir. This is unnecessary since gsu can tell where it is
installed by examining ${BASH_SOURCE[0]}.

Also the fallback to $HOME/.gsu is not required. This commit unifies
all three locations and also calls _gsu_setup as early as possible:
when the gsu module is sourced.

config
gui
subcommand

diff --git a/config b/config
index 09330f355cc5b16d8cb0288760f3c620f92c65ef..7667cf5911d21b83469da272c1c672bcd6ab5fdf 100644 (file)
--- a/config
+++ b/config
@@ -79,7 +79,7 @@ gsu_check_options_or_die()
 }
 
 if [[ "$(type -t _gsu_setup)" != "function" ]]; then
 }
 
 if [[ "$(type -t _gsu_setup)" != "function" ]]; then
-       gsu_dir=${gsu_dir:=${HOME:-}/.gsu}
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
        . $gsu_dir/common || exit 1
        _gsu_setup
 fi
        . $gsu_dir/common || exit 1
        _gsu_setup
 fi
diff --git a/gui b/gui
index eb9f29f37c9e1d7aef03c96f08b4838285931f1a..72717a1ecd30750990073c86ceb47bc8f65604e6 100644 (file)
--- a/gui
+++ b/gui
@@ -1,8 +1,9 @@
 #!/bin/bash
 
 #!/bin/bash
 
-if [[ $(type -t gsu_is_a_number) != "function" ]]; then
-       GSU_DIR=${GSU_DIR:=${HOME:-}/.gsu}
-       . $GSU_DIR/common || exit 1
+if [[ "$(type -t _gsu_setup)" != "function" ]]; then
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
+       . $gsu_dir/common || exit 1
+       _gsu_setup
 fi
 
 export GSU_NODE_NAME_PATTERN='[a-zA-Z_]'
 fi
 
 export GSU_NODE_NAME_PATTERN='[a-zA-Z_]'
@@ -200,7 +201,6 @@ gsu_gui()
 {
        local tree="$1" subtree
 
 {
        local tree="$1" subtree
 
-       _gsu_setup
        type -t dialog &> /dev/null
        if (($? != 0)); then
                gsu_msg "dialog executable not found"
        type -t dialog &> /dev/null
        if (($? != 0)); then
                gsu_msg "dialog executable not found"
index 6b5df0a37c2a676c7c86d74c5a07371fddd2e1bf..bab8ded4ea1d9f0b99562eca7dc8d257244062a0 100644 (file)
@@ -1,9 +1,10 @@
 #!/bin/bash
 # (C) 2006-2011 Andre Noll
 
 #!/bin/bash
 # (C) 2006-2011 Andre Noll
 
-if [[ $(type -t gsu_is_a_number) != "function" ]]; then
-       GSU_DIR=${GSU_DIR:=${HOME-}/.gsu}
-       . $GSU_DIR/common || exit 1
+if [[ "$(type -t _gsu_setup)" != "function" ]]; then
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
+       . $gsu_dir/common || exit 1
+       _gsu_setup
 fi
 
 _gsu_usage()
 fi
 
 _gsu_usage()
@@ -531,7 +532,6 @@ gsu_get_unnamed_arg_num()
 gsu()
 {
        local i
 gsu()
 {
        local i
-       _gsu_setup
        _gsu_available_commands
        gsu_cmds="$result"
        if test $# -eq 0; then
        _gsu_available_commands
        gsu_cmds="$result"
        if test $# -eq 0; then