X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=misc%2Fgsu%2Fsubcommand;h=6b5df0a37c2a676c7c86d74c5a07371fddd2e1bf;hb=1098785778a242838668df8c45f4a07d1690b06c;hp=3a1bc6db6697c7a0676a45ae940b930d18ee8901;hpb=844b7a202a39530d00aa191bae9e3d4189b89049;p=gsu.git diff --git a/misc/gsu/subcommand b/misc/gsu/subcommand index 3a1bc6d..6b5df0a 100644 --- a/misc/gsu/subcommand +++ b/misc/gsu/subcommand @@ -2,7 +2,7 @@ # (C) 2006-2011 Andre Noll if [[ $(type -t gsu_is_a_number) != "function" ]]; then - GSU_DIR=${GSU_DIR:=$HOME/.gsu} + GSU_DIR=${GSU_DIR:=${HOME-}/.gsu} . $GSU_DIR/common || exit 1 fi @@ -11,8 +11,16 @@ _gsu_usage() gsu_short_msg "# Usage: $_gsu_self command [options]" } -# Each line matching this is recognized as a subcommand. The name of the may be -# given as $1. In any case the subcommand is the first subexpression. +# Return an extended regular expression to match against $0. +# +# When called without argument, the expression matches all lines which define a +# subcommand. +# +# If an argument is given, the returned expression matches only the subcommand +# passed as $1. This is useful to tell if a string is a valid subcommand. +# +# Regardless of whether an argument is given, the returned expression contains +# exactly one parenthesized subexpression for matching the command name. _gsu_get_command_regex() { local cmd="${1:-[-a-zA-Z_0-9]+}" @@ -90,7 +98,7 @@ 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 conf="${gsu_config_file:=$HOME/.$gsu_name.rc}" + local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}" gsu_getopts "e" eval "$result" @@ -505,6 +513,21 @@ gsu_get_unnamed_arg_num() result="$(($n - 1))" } +# Entry point for all gsu-based scripts. +# +# The startup part of the application script should source this file to load +# the functions defined here, and then call gsu(). Functions starting with com_ +# are automatically recognized as subcommands. +# +# Minimal example: +# +# com_hello() +# { +# echo 'hello world' +# } +# gsu_dir=${gsu_dir:-/system/location/where/gsu/is/installed} +# . $gsu_dir/subcommand || exit 1 +# gsu "$@" gsu() { local i