Subversion Repositories general

Rev

Rev 1178 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1177 dev 1
#!/bin/sh
2
 
3
#
4
# make a release (source code tar) of the project
5
# needs two params: major and minor version of the release
6
#
7
 
8
PROJ=rebootd
9
OUTDIR=output
10
SRCDIR=src
11
 
12
VER_MAJOR=$1
13
VER_MINOR=$2
14
VER_REVISION=`svnversion .`
15
RELEASE_NAME=${PROJ}-${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}
16
 
17
RELDIR=${OUTDIR}/release
18
COMMITDIR=releases
19
WEBDIR=26th.net:www/26th.net/html/public/projects/rebootd/bin    # scp format
20
 
21
# check params
22
[ -n "${VER_MINOR}" ] || { echo "Version not specified" >> /dev/stderr; exit 1; }
23
 
24
# only commited revisions are allowed for release
25
if ( ! echo $VER_REVISION | grep -E '^[0-9]+$' > /dev/null ) ; then
26
	echo "Cannot make release - current revision $VER_REVISION not commited" >> /dev/stderr
27
	exit 1;
28
fi
29
 
30
# create the tar
31
rm -rf ${RELDIR} \
32
	|| { echo "Cannot delete ${RELDIR} dir" >> /dev/stderr; exit 2; }
33
mkdir ${RELDIR} \
34
	|| { echo "Cannot create ${RELDIR} dir" >> /dev/stderr; exit 2; }
35
cp -r ${SRCDIR} ${RELDIR}/${RELEASE_NAME} \
36
	|| { echo "Cannot copy ${SRCDIR} to ${RELDIR}/${RELEASE_NAME}" >> /dev/stderr; exit 2; }
1181 dev 37
sed -e "s/%VER_MAJOR%/${VER_MAJOR}/" -e "s/%VER_MINOR%/${VER_MINOR}/" \
38
	-e "s/%VER_REVISION%/${VER_REVISION}/" ${SRCDIR}/Makefile \
1177 dev 39
	> ${RELDIR}/${RELEASE_NAME}/Makefile \
40
	|| { echo "Cannot generate ${RELDIR}/${RELEASE_NAME}/Makefile" >> /dev/stderr; exit 2; }
41
tar cf - --exclude '*/.svn' -C ${RELDIR} ${RELEASE_NAME} | gzip > ${OUTDIR}/${RELEASE_NAME}.tar.gz \
42
	|| { echo "Cannot create ${OUTDIR}/${RELEASE_NAME}.tar.gz" >> /dev/stderr; exit 2; }
43
rm -rf ${RELDIR} \
44
	|| { echo "Cannot clear ${RELDIR} dir" >> /dev/stderr; exit 2; }
45
 
46
# commit the release
1178 dev 47
echo "Release made successfully. Enter YES to commit it."
1177 dev 48
read confirm
49
if [ "$confirm" != "YES" ] ; then
50
	echo "you have to answer 'YES' to continue"
51
	exit 1
52
fi
53
 
54
cp ${OUTDIR}/${RELEASE_NAME}.tar.gz ${COMMITDIR} \
55
	|| { echo "Cannot copy ${OUTDIR}/${RELEASE_NAME}.tar.gz to releases" >> /dev/stderr; exit 2; }
56
svn add ${COMMITDIR}/${RELEASE_NAME}.tar.gz \
57
	|| { echo "Cannot add ${COMMITDIR}/${RELEASE_NAME}.tar.gz to repository" >> /dev/stderr; exit 2; }
58
svn commit ${COMMITDIR}/${RELEASE_NAME}.tar.gz \
59
	-m "${PROJ}: auto commit of new release ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}" \
60
	|| { echo "Cannot commit ${COMMITDIR}/${RELEASE_NAME}.tar.gz" >> /dev/stderr; exit 2; }
1178 dev 61
svn up \
62
	|| { echo "Cannot update working copy" >> /dev/stderr; exit 2; }
1177 dev 63
 
1178 dev 64
# publish to web
1177 dev 65
scp ${COMMITDIR}/${RELEASE_NAME}.tar.gz ${WEBDIR} \
66
	|| { echo "Cannot publish ${COMMITDIR}/${RELEASE_NAME}.tar.gz to ${WEBDIR}" >> /dev/stderr; exit 2; }
67
 
68
echo "Release ${RELEASE_NAME} is commited and published"
69