blob: 33a2d82d2ce68e28b4c4e30a00b4eca71f0a3849 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#!/bin/sh
# jpokorny@redhat.com
#
# base functions
#
announce () {
# use colours if available
echo
if test -t 1; then
echo -en "\\033[32m"
echo -n "$1"
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_git_submodule () {
# usage: $1 = action, $2..n submodules
ret=0
for submodule in "${@:2}"; do
announce "$1 $submodule (git submodule)"
if [ "$1" == "get" ]; then
git submodule update --init "$submodule" 2>&1
else
do_del "$submodule"
fi
ret=$?
[ $ret -ne 0 ] && break
done
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)
# TODO: support for revisions?
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 $?
}
#
# source the choices (./init-* files) and go
#
for choice in $(ls init-*); do [ -f $choice ] && source ./$choice; done
CHOICES=$(echo $CHOICES | sed 's/^|//')
main () {
action="get"
if [ "$1" == "get" -o "$1" == "del" ]; then
action="$1"
[ $# -gt 1 ] && shift # || fall-through via unrecognized choice
fi
while [ -n "$1" ]; do
eval "case \"$1\" in
$CHOICES)
$1 $action || exit $?
shift
continue;;
all)
main $action $(echo $CHOICES | sed 's/|/ /g')
break;;
help|*)
echo \"usage: ./init.sh [del] ($CHOICES|all)+\"
break;;
esac"
done
}
[ $# -eq 0 ] && main help || main "$@"
|