Rev 1177 | Go to most recent revision | 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; } |
||
37 | sed -e 's/%VER_MAJOR%/${VER_MAJOR}/' -e 's/%VER_MINOR%/${VER_MINOR}/' \ |
||
38 | -e 's/%VER_REVISION%/${VER_REVISION}/' ${SRCDIR}/Makefile \ |
||
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 |