3 # Make a new git tag and upload a new release.
4 ######################################################################
5 # The tag's name (a version string like `v1.2.3') and the commit
6 # message come from the topmost entry of ../NEWS. Headlines of those
7 # entries are supposed to start with `* ' and must contain the version
8 # string unquoted and surrounded by whitespace.
12 function latest_NEWS_section
{
13 # Extract topmost section from NEWS.
15 -e '/^\* .*v[0-9]+\.[0-9]+\.?[0-9]* .*$/,/(^\* .*v[0-9]+\.[0-9]+\.?[0-9]* .*$)|(^; .*$)/{H}' \
16 -e '${g; s/(\n\* .*v[0-9]+\.[0-9]+\.?[0-9]* .*$)|(\n; .*$)//m2; s/^\n//m1; p}' \
20 function latest_version_number
{
21 # Extract version string from topmost headline in NEWS.
22 latest_NEWS_section | \
23 grep -Eom 1 -e 'v[0-9]+\.[0-9]+\.?[0-9]*'
26 function naked_version_number
{
27 # Version string without the leading `v'.
28 version
=`latest_version_number`
32 # program_version_number <program_file>
33 function program_version_number
{
34 grep -Em 1 -e '\$version *=.*v[0-9]+\.[0-9]+\.?[0-9]*.*;' $1 | \
35 grep -Eom 1 -e 'v[0-9]+\.[0-9]+\.?[0-9]*'
38 echo "Tagging `latest_version_number`"
40 if [[ `program_version_number ../monikop` != `latest_version_number` ]]; then
41 echo "Version number mismatch between monikop and NEWS. Aborting."
43 elif [[ `program_version_number ../pokinom` != `latest_version_number` ]]; then
44 echo "Version number mismatch between pokinom and NEWS. Aborting."
48 if ! git-tag
-a -m "`latest_NEWS_section`" `latest_version_number`; then
49 echo "Setting tag `latest_version_number` failed. But maybe things are already in place."
51 echo "Tagging `latest_version_number` successful."
54 if [[ `git-describe $(latest_version_number)` != `latest_version_number` ]]; then
55 echo "Tag `latest_version_number` missing. Aborting."
59 echo "Writing archive ../monikop-`naked_version_number`.tar.gz."
64 --prefix=monikop-
`naked_version_number`/ `latest_version_number` | \
65 gzip > monikop-
`naked_version_number`.
tar.gz
68 echo "Unsuccessful. Aborting."
72 echo "Writing instruct-ohloh-`naked_version_number`.xml."
73 if ! cat > instruct-ohloh-
`naked_version_number`.xml
<<EOF
75 <package name="Monikop">
77 <release name="`latest_version_number`">
79 <file name="monikop-`naked_version_number`.tar.gz"/>
87 echo "Unsuccessful. Aborting."
91 echo "Uploading to upload.ohloh.net."
92 scp ..
/monikop-
`naked_version_number`.
tar.gz trebb@upload.ohloh.net
:monikop
/files
&&
93 scp instruct-ohloh-
`naked_version_number`.xml trebb@upload.ohloh.net
:monikop
/instructs