blob: 95299ec9f8d868c05ef00066741bdcfab5f2a914 (
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
|
SHORT_OPTS=""
LONG_OPTS=""
for option in $(seq 0 5 $((${#OPTIONS[@]}-1)) )
do
SHORT_OPTS+="${OPTIONS[(${option} + 1)]}${OPTIONS[(${option} + 3)]:+:}"
LONG_OPTS+="${OPTIONS[(${option} + 2)]}${OPTIONS[(${option} + 3)]:+:},"
done
GETOPT_CMD="getopt -n $(basename $0) -o ${SHORT_OPTS} -l ${LONG_OPTS} -- $@"
USAGES=(
"mktree [options] <format> <name>"
"mktree -f <format> [options] <name>"
)
PrintHelp() {
leader="Usage: "
for usage in "${USAGES[@]}"
do
echo "${leader}${usage}"
leader=" or "
done
echo "Options:"
for option in $(seq 0 5 $((${#OPTIONS[@]}-1)) )
do
short="${OPTIONS[(${option} + 1)]}"
long="${OPTIONS[(${option} + 2)]}"
arg="${OPTIONS[(${option} + 3)]}"
desc="${OPTIONS[(${option} + 4)]}"
printf " -%-6s --%-16s %-48s\n" \
"${short} ${arg}" "${long}${arg:+=${arg}}" "${desc}"
done
}
ParseOpts() {
while [ $# -gt 0 ]
do
case $1 in
"--") # end of options
shift
if [ -z "${FMT_PATH}" ]
then
[ $# -le 0 ] && Error "Project template not specified!" && return 1
FMT_PATH=$(GetTemplate $(Unquote $1))
[ 0 -ne $? ] && Error "Couldn't find template $1!" && exit 1
shift
fi
PROJECT_NAME=$(Unquote $1)
shift
[ -z "${PROJECT_NAME}" ] && Error "Project name not specified!" && return 1
MakeProject ${FMT_PATH} ${PROJECT_NAME} $@
exit $?
;;
-*) # options
for i in $( seq 0 5 $((${#OPTIONS[@]}-1)) )
do
callback="${OPTIONS[${i}]}"
short="${OPTIONS[(${i} + 1)]}"
long="${OPTIONS[(${i} + 2)]}"
arg="${OPTIONS[(${i} + 3)]}"
desc="${OPTIONS[(${i} + 4)]}"
case $1 in
"-${short}" | "--${long}")
eval "${callback}" "${arg:+$2}" || exit $?
[ -n "${arg}" ] && shift # extra shift if the option takes an arg
break
;;
esac
done
;;
esac
shift
done
}
|