#!/bin/bash -e if ! [ "$1" ] then echo "usage: $0 " exit 1 fi if ! [ -d ".git" ] then echo "Should be run from the LuaRocks git repo dir." exit 1 fi make clean || exit 1 if [ "$1" != "dev" ] then ROCKSPEC="luarocks-$1-1.rockspec" if [ "$1" = "branch" ] then shift version=$1 if git show $version &> /dev/null then echo "Branch $version already exists." exit 1 fi git reset git checkout . git checkout -B $version ROCKSPEC="luarocks-$1-1.rockspec" currentrockspec=$(ls luarocks-*.rockspec) if [ "$currentrockspec" != "$ROCKSPEC" ] && ! [ -e "$ROCKSPEC" ] then git mv luarocks-*.rockspec "$ROCKSPEC" fi sed -i 's/"Configuring LuaRocks version .*"/"Configuring LuaRocks version '$version'..."/' configure sed -i 's/version = "[^"]*"/version = "'$version'-1"/' $ROCKSPEC sed -i 's/\( url = "[^"]*",\)/\1\n tag = "v'$version'"/' $ROCKSPEC sed -i 's/program_version = "[^"]*"/program_version = "'$version'"/' src/luarocks/core/cfg.lua sed -i 's/version: [0-9.]*/version: '$version'./' appveyor.yml sed -i 's/LUAROCKS_VER: [0-9.]*/LUAROCKS_VER: '$version'/' appveyor.yml program_series=${version%.*} sed -i 's/program_series = "[0-9.]*"/program_series = "'$program_series'"/' src/luarocks/core/cfg.lua sed -i 's/vars.VERSION = "[0-9.]*"/vars.VERSION = "'$program_series'"/' install.bat echo "===============================================================================" git diff echo "===============================================================================" echo "Does the change look alright? Press 'y' to commit" echo "===============================================================================" read if [ "$REPLY" = "y" ] then git commit -av -m "Release $version" fi fi [ -e "$ROCKSPEC" ] || { echo echo "$ROCKSPEC is missing. Please check rockspec version is correct." } grep -q "LuaRocks version $1" "configure" || { echo echo "version in configure is incorrect. Please fix it." exit 1 } grep -q "\"$1-1\"" "$ROCKSPEC" || { echo echo "version in rockspec is incorrect. Please fix it." exit 1 } grep -q "program_version = \"$1\"" src/luarocks/core/cfg.lua || { echo echo "program_version in src/luarocks/core/cfg.lua is incorrect. Please fix it." exit 1 } grep -q "version: $1\\." appveyor.yml || { echo echo "version in appveyor.yml is incorrect. Please fix it." exit 1 } grep -q "LUAROCKS_VER: $1" appveyor.yml || { echo echo "LUAROCKS_VER in appveyor.yml is incorrect. Please fix it." exit 1 } # e.g. if $1 is "2.3.0", $program_series is "2.3" program_series=${1%.*} grep -q "program_series = \"$program_series\"" src/luarocks/core/cfg.lua || { echo echo "program_series in src/luarocks/core/cfg.lua is incorrect. Please fix it." exit 1 } grep -q "vars.VERSION = \"$program_series\"" install.bat || { echo echo "vars.VERSION in install.bat is incorrect. Please fix it." exit 1 } fi out="luarocks-$1" rm -rf "$out" mkdir "$out" shift git ls-files | while read i do if [ -f "$i" ] then dir=`dirname $i` mkdir -p "$out/$dir" cp "$i" "$out/$dir" fi done rm -rf "release-unix" "release-windows" "$out.tar.gz" "$out-win32.zip" mkdir "release-unix" cp -a "$out" "release-unix" mkdir "release-windows" mv "$out" "release-windows/$out-win32" cd "release-unix/$out" rm -rf makedist install.bat win32 .travis.yml .gitignore appveyor* .appveyor cd .. tar czvpf ../"$out.tar.gz" "$out" rm -f ../"$out.tar.gz.asc" cd .. rm -rf "release-unix" cd "release-windows/$out-win32" rm -rf makedist Makefile GNUmakefile configure .travis.yml .gitignore test appveyor* .appveyor cd .. zip -r ../"$out-win32.zip" "$out-win32" rm -f ../"$out-win32.zip.asc" cd .. rm -rf "release-windows" if [ "$1" = "binary" ] then shift ./configure make binary cd build-binary mkdir "$out-linux-x86_64" cp luarocks.exe "$out-linux-x86_64/luarocks" cp luarocks-admin.exe "$out-linux-x86_64/luarocks-admin" zip "../$out-linux-x86_64.zip" "$out-linux-x86_64"/* cd .. rm -f "$out-linux-x86_64.zip.asc" make windows-binary cd build-windows-binary mkdir "$out-windows-32" cp luarocks.exe "$out-windows-32/luarocks.exe" cp luarocks-admin.exe "$out-windows-32/luarocks-admin.exe" zip "../$out-windows-32.zip" "$out-windows-32"/* cd .. rm -f "$out-windows-32.zip.asc" fi if [ "$1" = "sign" ] then shift for f in \ $out-windows-32.zip \ $out-linux-x86_64.zip \ $out-win32.zip \ $out.tar.gz do [ -e "$f" -a ! -e "$f.asc" ] && gpg --armor --output "$f.asc" --detach-sign "$f" done fi