summaryrefslogtreecommitdiffstats
path: root/init.sh
diff options
context:
space:
mode:
Diffstat (limited to 'init.sh')
-rwxr-xr-xinit.sh48
1 files changed, 30 insertions, 18 deletions
diff --git a/init.sh b/init.sh
index b72b768..094ca2d 100755
--- a/init.sh
+++ b/init.sh
@@ -6,27 +6,32 @@
# internals
#
-CLR_OK=32
+CLR_USR=34
+CLR_SCR=32
CLR_BAD=31
CLR_WRN=33
+RET_DEL=64
+
CHOICES=""
check_nargs () {
[ $1 -ge $2 ]
ret=$?
- [ $ret -eq 0 ] || announce "action failed (expected $1+ args, got $2)" $CLR_BAD
+ [ $ret -eq 0 ] || do_announce "action failed (expected $1+ args, got $2)" $CLR_BAD
return $ret
}
check_ret () {
- [ $1 -ne 0 ] && announce "action failed with exit status $1" $CLR_BAD
+ [ $1 -ne 0 -a $1 -ne $RET_DEL ] \
+ && do_announce "action failed with exit status $1" $CLR_BAD
return $1
}
do_del () {
#echo "delete $1?"
- [ -d "$1" ] && rm -rfI -- "$1" || announce "$1 not present" $CLR_WRN
+ [ -d "$1" ] && rm -rfI -- "$1" || do_announce "$1 not present" $CLR_WRN
+ return $RET_DEL
}
do_announce () {
@@ -36,7 +41,7 @@ do_announce () {
if test -t 1; then
colour=$2
if [ -z "$colour" ]; then
- colour=$CLR_OK
+ colour=$CLR_USR
fi
echo -en "\\033[${colour}m"
echo -n "$1"
@@ -79,16 +84,23 @@ do_git_submodule () {
ret=0
git_prefix=$(git rev-parse --show-prefix)
for submodule in "${@:2}"; do
- announce "$1 $submodule (git submodule)" delimit
+ do_announce "$1 $submodule (git submodule)" $CLR_SCR delimit
if [ "$1" == "get" ]; then
- pushd "$(git rev-parse --show-toplevel)" 2>/dev/null
- git submodule update --init --recursive "${git_prefix}${submodule}" 2>&1
- popd 2>/dev/null
+ pushd "$(git rev-parse --show-toplevel)" >/dev/null
+ # TODO: --recursive seems to be buggy?
+ git submodule update --init "${git_prefix}${submodule}" 2>&1
+ ret=$?
+ popd >/dev/null
+ if [ $ret -eq 0 ]; then
+ pushd $submodule >/dev/null
+ git submodule update --init 2>&1
+ popd >/dev/null
+ fi
else
- do_del "$submodule" && return 64
+ do_del "$submodule"
+ ret=$?
fi
- ret=$?
- [ $ret -ne 0 ] && break
+ [ $ret -ne 0 ] && [ $ret -ne $RET_DEL ] && break
done
check_ret $ret
}
@@ -100,12 +112,12 @@ do_wget () {
if [ "$(dirname $2)" != "." ]; then
toplevel="$(dirname $2)"
fi
- announce "$1 $toplevel (wget)" delimit
+ do_announce "$1 $toplevel (wget)" $CLR_SCR delimit
if [ "$1" == "get" ]; then
wget --no-verbose --no-clobber --execute robots=off \
--directory-prefix "$2" "${@:3}" 2>&1
else
- do_del "$toplevel" && return 64
+ do_del "$toplevel"
fi
check_ret $?
}
@@ -117,7 +129,7 @@ do_svn () {
if [ "$(dirname $2)" != "." ]; then
toplevel="$(dirname $2)"
fi
- announce "$1 $toplevel (svn)" delimit
+ do_announce "$1 $toplevel (svn)" $CLR_SCR delimit
if [ "$1" == "get" ]; then
rev=""
if [ $# -ge 4 ]; then
@@ -125,7 +137,7 @@ do_svn () {
fi
svn checkout --force $rev "$3" "$2" | grep "revision"
else
- do_del "$toplevel" && return 64
+ do_del "$toplevel"
fi
check_ret $?
}
@@ -153,8 +165,8 @@ main () {
eval "case \"$1\" in
$CHOICES)
$1 $action
- ret=$?
- [ $ret -ne 0 ] && [ $ret -ne 64 ] && return $ret
+ ret=\$?
+ [ \$ret -ne 0 -a \$ret -ne $RET_DEL ] && return \$ret
shift
continue;;
all)