From 2b9cf4fd83e1ee2d8bb1a204a2f0589547cd1399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 20 Mar 2017 13:39:43 +0100 Subject: [PATCH] add script to build and release new versions --- scripts/release.sh | 95 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 scripts/release.sh diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 00000000..32ce458c --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,95 @@ +#!/bin/bash +set -e + +prompt() { + echo "root: ${ROOTDIR} old: ${OLDVERSION} - new: ${NEWVERSION}" + read -n 1 -r -p "Proceed? [Y/n] " P + echo + if [ "$P" == y -o "$P" == Y -o -z "$P" ]; then + return 0 + else + exit 1 + fi +} + +update() { + cd "${ROOTDIR}" + sed -i "s#\"${PYVERSION}\"#\"${NEWVERSION}\"#" "gallery_dl/version.py" + sed -i "s#/v${OLDVERSION}/#/v${NEWVERSION}/#" "README.rst" +} + +update-dev() { + cd "${ROOTDIR}" + sed -i "s#\"${NEWVERSION}\"#\"${NEWVERSION}-dev\"#" "gallery_dl/version.py" +} + +build() { + cd "${ROOTDIR}" + + # build wheel and source distributions + python setup.py bdist_wheel sdist + + # build windows exe in vm + ln -fs "${ROOTDIR}" /tmp/ + vmstart "Windows 7" & + disown + while [[ ! -e "gallery-dl.exe" ]] ; do + sleep 5 + done + + # check exe version + OUTPUT="$(wine gallery-dl.exe --version)" + if [[ ! "${OUTPUT%?}" == "${NEWVERSION}" ]]; then + echo "exe version mismatch: ${OUTPUT} != ${NEWVERSION}" + exit 3 + fi + [ -e "dist/gallery-dl.exe" ] && mv -f "dist/gallery-dl.exe" "dist/gallery-v${OLDVERSION}-dl.exe" + mv "gallery-dl.exe" "./dist/" +} + +sign() { + cd "${ROOTDIR}/dist" + gpg --detach-sign --armor gallery_dl-${NEWVERSION}-py3-none-any.whl + gpg --detach-sign --armor gallery_dl-${NEWVERSION}.tar.gz + gpg --detach-sign gallery-dl.exe +} + +git-upload() { + cd "${ROOTDIR}" + git add "gallery_dl/version.py" "README.rst" + git commit -S -m "release version ${NEWVERSION}" + git tag -s -m "version ${NEWVERSION}" "v${NEWVERSION}" + # git push origin "v${NEWVERSION}" +} + +pypi-upload() { + cd "${ROOTDIR}/dist" + twine upload +} + + +ROOTDIR="$(realpath "$(dirname "$0")/..")/" + +LASTTAG="$(git describe --abbrev=0 --tags)" +OLDVERSION="${LASTTAG#v}" +PYVERSION="$(python -c "import gallery_dl as g; print(g.__version__)")" + +if [[ "$1" ]]; then + NEWVERSION="$1" +else + NEWVERSION="${PYVERSION%-dev}" +fi + +if [[ ! $NEWVERSION =~ [0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "invalid version: $NEWVERSION" + exit 2 +fi + + +prompt +update +build +sign +git-upload +pypi-upload +update-dev