0,0 → 1,70 |
#!/bin/sh |
|
# |
# make a release (source code tar) of the project |
# needs two params: major and minor version of the release |
# |
|
PROJ=rebootd |
OUTDIR=output |
PROG=${OUTDIR}/${PROJ} |
SRCDIR=src |
SRCS=${SRCDIR}/rebootd.c |
|
VER_MAJOR=$1 |
VER_MINOR=$2 |
VER_REVISION=`svnversion .` |
RELEASE_NAME=${PROJ}-${VER_MAJOR}.${VER_MINOR}.${VER_REVISION} |
|
SAMPLES=${SRCDIR}/rebootd.conf |
RELDIR=${OUTDIR}/release |
COMMITDIR=releases |
WEBDIR=26th.net:www/26th.net/html/public/projects/rebootd/bin # scp format |
|
# check params |
[ -n "${VER_MINOR}" ] || { echo "Version not specified" >> /dev/stderr; exit 1; } |
|
# only commited revisions are allowed for release |
if ( ! echo $VER_REVISION | grep -E '^[0-9]+$' > /dev/null ) ; then |
echo "Cannot make release - current revision $VER_REVISION not commited" >> /dev/stderr |
exit 1; |
fi |
|
# create the tar |
rm -rf ${RELDIR} \ |
|| { echo "Cannot delete ${RELDIR} dir" >> /dev/stderr; exit 2; } |
mkdir ${RELDIR} \ |
|| { echo "Cannot create ${RELDIR} dir" >> /dev/stderr; exit 2; } |
cp -r ${SRCDIR} ${RELDIR}/${RELEASE_NAME} \ |
|| { echo "Cannot copy ${SRCDIR} to ${RELDIR}/${RELEASE_NAME}" >> /dev/stderr; exit 2; } |
sed -e 's/%VER_MAJOR%/${VER_MAJOR}/' -e 's/%VER_MINOR%/${VER_MINOR}/' \ |
-e 's/%VER_REVISION%/${VER_REVISION}/' ${SRCDIR}/Makefile \ |
> ${RELDIR}/${RELEASE_NAME}/Makefile \ |
|| { echo "Cannot generate ${RELDIR}/${RELEASE_NAME}/Makefile" >> /dev/stderr; exit 2; } |
tar cf - --exclude '*/.svn' -C ${RELDIR} ${RELEASE_NAME} | gzip > ${OUTDIR}/${RELEASE_NAME}.tar.gz \ |
|| { echo "Cannot create ${OUTDIR}/${RELEASE_NAME}.tar.gz" >> /dev/stderr; exit 2; } |
rm -rf ${RELDIR} \ |
|| { echo "Cannot clear ${RELDIR} dir" >> /dev/stderr; exit 2; } |
|
# commit the release |
echo "Relase made successfully. Enter YES to commit it." |
read confirm |
if [ "$confirm" != "YES" ] ; then |
echo "you have to answer 'YES' to continue" |
exit 1 |
fi |
|
cp ${OUTDIR}/${RELEASE_NAME}.tar.gz ${COMMITDIR} \ |
|| { echo "Cannot copy ${OUTDIR}/${RELEASE_NAME}.tar.gz to releases" >> /dev/stderr; exit 2; } |
svn add ${COMMITDIR}/${RELEASE_NAME}.tar.gz \ |
|| { echo "Cannot add ${COMMITDIR}/${RELEASE_NAME}.tar.gz to repository" >> /dev/stderr; exit 2; } |
svn commit ${COMMITDIR}/${RELEASE_NAME}.tar.gz \ |
-m "${PROJ}: auto commit of new release ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}" \ |
|| { echo "Cannot commit ${COMMITDIR}/${RELEASE_NAME}.tar.gz" >> /dev/stderr; exit 2; } |
|
# publish web |
scp ${COMMITDIR}/${RELEASE_NAME}.tar.gz ${WEBDIR} \ |
|| { echo "Cannot publish ${COMMITDIR}/${RELEASE_NAME}.tar.gz to ${WEBDIR}" >> /dev/stderr; exit 2; } |
|
echo "Release ${RELEASE_NAME} is commited and published" |
|
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |