diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2012-02-02 18:29:22 +0100 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2012-02-02 18:29:22 +0100 |
commit | c77d0491c8f0e11bc777ab04c30ba5c61af762e6 (patch) | |
tree | e4db29454a5ae4350776fc6eab765fc06b17d82b | |
parent | 116eff503606f7f34350ad85db0c9a3df4e1720d (diff) | |
download | vim4projects-c77d0491c8f0e11bc777ab04c30ba5c61af762e6.tar.gz vim4projects-c77d0491c8f0e11bc777ab04c30ba5c61af762e6.tar.xz vim4projects-c77d0491c8f0e11bc777ab04c30ba5c61af762e6.zip |
init: better-managed processing
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
-rw-r--r-- | init-functions | 75 | ||||
-rwxr-xr-x | init.sh | 15 |
2 files changed, 58 insertions, 32 deletions
diff --git a/init-functions b/init-functions index d3ce738..29eab6f 100644 --- a/init-functions +++ b/init-functions @@ -9,38 +9,26 @@ announce () { echo -e "\\033[0m" else echo "[[ $1 ]]" - fi } +check_nargs () { + [ $1 -ge $2 ] + ret=$? + [ $ret -eq 0 ] || announce "action failed (expected $1+ args, got $2)" + return $ret +} + +check_ret () { + [ $1 -ne 0 ] && announce "action failed with exit status $1" + return $1 +} + do_del () { #echo "delete $1?" [ -d "$1" ] && rm -rfI -- "$1" || echo "$1 not present" } -do_wget () { - # usage: $1 = action, $2 = target dir, $2..n = actual arguments to wget - if [ $# -le 2 ]; then - echo "do_wget: not enough arguments" - exit 2 - fi - if [ "$(dirname $2)" == "." ]; then - toplevel="$2" - else - toplevel="$(dirname $2)" - fi - announce "$1 $toplevel (wget)" - - if [ "$1" == "get" ]; then - wget -nv -P "$2" "${@:3}" 2>&1 - else - do_del "$toplevel" - fi - ret=$? - [ $ret -ne 0 ] && announce "action failed with exit status $?" - return $ret -} - do_git_submodule () { # usage: $1 = action, $2..n submodules ret=0 @@ -54,6 +42,41 @@ do_git_submodule () { ret=$? [ $ret -ne 0 ] && break done - [ $ret -ne 0 ] && announce "action failed with exit status $?" - return $ret + check_ret $ret +} + +do_wget () { + # usage: $1 = action, $2 = target dir, $3..n = actual arguments to wget + check_nargs $# 3 || return $? + if [ "$(dirname $2)" == "." ]; then + toplevel="$2" + else + toplevel="$(dirname $2)" + fi + announce "$1 $toplevel (wget)" + + if [ "$1" == "get" ]; then + wget --no-verbose --directory-prefix "$2" "${@:3}" 2>&1 + else + do_del "$toplevel" + fi + check_ret $? +} + +do_svn () { + # usage: $1 = action, $2 = target dir, $3 = svn repo (+ possibly args) + check_nargs $# 3 || return $? + if [ "$(dirname $2)" == "." ]; then + toplevel="$2" + else + toplevel="$(dirname $2)" + fi + announce "$1 $toplevel (svn)" + + if [ "$1" == "get" ]; then + svn checkout --force "${@:3}" "$2" 2>&1 + else + do_del "$toplevel" + fi + check_ret $? } @@ -2,7 +2,7 @@ # Read README.txt first. # jpokorny@redhat.com -source init-functions +source ./init-functions # # categories of plugins + recipes to get them @@ -57,24 +57,27 @@ optional () { # go # +CHOICES="common|python|tg2|web|optional" + main () { + echo $@ action="get" if [ "$1" == "get" -o "$1" == "del" ]; then action="$1" shift fi while [ -n "$1" ]; do - case "$1" in - common|python|tg2|web|optional) + eval "case \"$1\" in + $CHOICES) $1 $action || exit $? shift;; all) - main $action common python tg2 web optional + main $action $(echo $CHOICES | sed 's/|/ /g') break;; help|*) - echo "usage: ./init.sh [del] (common|python|tg2|web|optional|all)+" + echo \"usage: ./init.sh [del] ($CHOICES|all)+\" break;; - esac + esac" done } |