#!/usr/bin/env bash [ "$1" ] || { echo "usage.....: $0 " echo "example...: $0 3.1.1" echo echo "Before running this, make sure the packages were built:" echo " makedist 3.1.1 /opt/lua54/ binary sign" echo "And the tag was merged:" echo " mergerelease 3.1.1" echo exit 1 } ####################################### # preliminary checks ####################################### v="$1" git checkout v$v || { echo "Could not checkout release tag." } packages=( luarocks-$v-windows-32.zip luarocks-$v-windows-32.zip.asc luarocks-$v-windows-64.zip luarocks-$v-windows-64.zip.asc luarocks-$v-linux-x86_64.zip luarocks-$v-linux-x86_64.zip.asc luarocks-$v-win32.zip luarocks-$v-win32.zip.asc luarocks-$v.tar.gz luarocks-$v.tar.gz.asc ) for f in "${packages[@]}" luarocks-$v-1.rockspec do [ -e "$f" ] || { echo "Missing file $f" exit 1 } done ####################################### # utility ####################################### function confirm() { branch="$1" echo "****************************************" git diff $branch echo "****************************************" git status echo "****************************************" echo "Everything looks all right? (y/n)" echo "(Answering y will commit and push)" read if ! [ "$REPLY" == "y" ] then git reset git checkout . git checkout master exit 1 fi } ####################################### # luarocks.org ####################################### luarocks upload luarocks-$v-1.rockspec ####################################### # gh-pages ####################################### git checkout gh-pages git fetch origin gh-pages git reset --hard origin/gh-pages cp "${packages[@]}" releases cd releases git add "${packages[@]}" gawk ' /add new release here/ { print "" print "" print "luarocks-'$v'.tar.gzPGP signature" print "luarocks-'$v'-windows-32.zip (luarocks.exe stand-alone Windows 32-bit binary)PGP signature" print "luarocks-'$v'-windows-64.zip (luarocks.exe stand-alone Windows 64-bit binary)PGP signature" print "luarocks-'$v'-linux-x86_64.zip (luarocks stand-alone Linux x86_64 binary)PGP signature" print "luarocks-'$v'-win32.zip (legacy Windows package, includes Lua 5.1)PGP signature" done = 1 } // { if (done == 1) { done = 0 } else { print } } ' index.html > index.html.1 mv index.html.1 index.html git add index.html gawk ' /^\[$/ { go = 1 } // { print if (go == 1) { go = 0 print "{" print "\"'$v'\": {" print "\"date\": \"'$(date +'%Y-%m-%d')'\"," print "\"files\": [\"luarocks-'$v'.tar.gz\", \"luarocks-'$v'.tar.gz.asc\", \"luarocks-'$v'-win32.zip\", \"luarocks-'$v'-win32.zip.asc\", \"luarocks-'$v'-windows-32.zip\", \"luarocks-'$v'-windows-32.zip.asc\", \"luarocks-'$v'-windows-64.zip\", \"luarocks-'$v'-windows-64.zip.asc\", \"luarocks-'$v'-linux-x86_64.zip\", \"luarocks-'$v'-linux-x86_64.zip.asc\"]," print "\"about\": []" print "}}," } } ' releases.json > releases.json.1 mv releases.json.1 releases.json git add releases.json confirm gh-pages git commit -av -m "Release $v" git push ####################################### # luarocks.org ####################################### git checkout v$v luarocks upload luarocks-$v-1.rockspec git checkout master ####################################### # luarocks-site ####################################### if [ -e ../luarocks-site ] then cd ../luarocks-site git pull else cd .. git clone ssh://git@github.com/luarocks/luarocks-site cd luarocks-site fi sed -i 's,luarocks-[0-9]*\.[0-9]*\.[0-9]*,luarocks-'$v',' static/md/home.md git add static/md/home.md confirm master git commit static/md/home.md -m "update front page for LuaRocks $v" git push ####################################### # luarocks.wiki ####################################### [ -e ../luarocks.wiki ] || { cd .. git clone ssh://git@github.com/luarocks/luarocks.wiki.git } if [ -e ../luarocks.wiki ] then cd ../luarocks.wiki git pull else cd .. git clone ssh://git@github.com/luarocks/luarocks.wiki.git cd luarocks.wiki fi sed -i "s,Latest release: .*,Latest release: '''LuaRocks $v''' - '$(date +'%d/%b/%Y')'," Download.mediawiki sed -i "s,/luarocks-[0-9.]*[0-9],/luarocks-$v,g" Download.mediawiki gawk ' BEGIN { print "'\'\'\''Version '$v\'\'\'' - '$(date +'%d/%b/%Y')' - [http://luarocks.org/releases/luarocks-'$v'.tar.gz Source tarball for Unix] -" print "[http://luarocks.org/releases/luarocks-'$v'-windows-32.zip Windows binary (32-bit)] -" print "[http://luarocks.org/releases/luarocks-'$v'-windows-64.zip Windows binary (64-bit)] -" print "[http://luarocks.org/releases/luarocks-'$v'-linux-x86_64.zip Linux binary (x86_64)] -" print "[http://luarocks.github.io/luarocks/releases other files]" print "" } // { print } ' "Release-history.mediawiki" > "Release-history.mediawiki.1" mv "Release-history.mediawiki.1" "Release-history.mediawiki" git add "Download.mediawiki" git add "Release-history.mediawiki" git add "Installation-instructions-for-Unix.md" confirm master git commit -av -m "Release $v" git push