-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsvnlogger.sh
115 lines (106 loc) · 1.88 KB
/
svnlogger.sh
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
#!/bin/bash
#
# Prints the usage details
#
print_help()
{
echo "svnlogger 0.1 by Abhishek Shrivastava [i.abhi27[at]gmail.com]";
echo "Usage : $0 [options] [svn root] [changelog]"
echo "options include:";
echo " -h : Use HTML output";
echo " -x : Use TEXT output (default)";
echo " -t path : use path as template folder instead of default (Only with -h)";
echo "svnroot : The root directory of SVN Repo. Default = ./";
echo "changelog : The path of changelog file. Default = ./ChangeLog";
return
}
#
# Prints an error
#
print_error()
{
case "$1" in
1) echo "Error : -x and -h cannot be both set";;
2) echo "Error : -h must be set before using -t";;
esac
exit 1;
}
#
# Generates text log
#
generate_text_log()
{
SVNROOT=$1
CHANGELOG=$2
: ${SVNROOT:="./"}
: ${CHANGELOG:="./ChangeLog"}
svn log -r HEAD:1 $SVNROOT | grep -v "^$" | grep -v ^- | awk -F "|" '
BEGIN{
username=""
date=""
revno=""
}
{
if($1 ~ /^r[0-9]*/)
{
username=$2
date=substr($3,1,19)
revno=substr($1,2)
}
else
{
print "Revision " revno " : " $1 " by " username " on " date
print "--------------------------------------------------------------"
}
}
END{
print "Log generated using svnlogger v0.1 by abhishekdelta"
}' > $CHANGELOG
}
#
# Generate HTML log
#
generate_html_log()
{
echo "hey"
}
#
# Main procedure begins here
#
#
# Parse arguments
#
while getopts hxt: opt
do
case "$opt" in
h) if [ -z "$TEXT" ] ;
then
HTML="true"
else print_error 1;
fi ;;
t) if [ ! -z "$HTML" ] ;
then
TEMPLATE="$OPTARG"
else print_error 2;
fi ;;
x) if [ -z "$HTML" ] ;
then
TEXT="true"
else print_error 1;
fi ;;
[?]) print_help; exit 1;;
esac
done
#
# Generate Log
#
if [ -z "$HTML" ] || [ $TEXT -eq "true" ] ;
then
echo "Generating text log ..... "
generate_text_log;
echo " done!"
else
echo "Generating html log ..... "
generate_html_log;
echo " done!"
fi