summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2012-02-02 18:29:22 +0100
committerJan Pokorný <jpokorny@redhat.com>2012-02-02 18:29:22 +0100
commitc77d0491c8f0e11bc777ab04c30ba5c61af762e6 (patch)
treee4db29454a5ae4350776fc6eab765fc06b17d82b
parent116eff503606f7f34350ad85db0c9a3df4e1720d (diff)
downloadvim4projects-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-functions75
-rwxr-xr-xinit.sh15
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 $?
}
diff --git a/init.sh b/init.sh
index c5d9201..c03aa07 100755
--- a/init.sh
+++ b/init.sh
@@ -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
}