aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/release.sh
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2019-07-02 04:33:45 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2019-07-02 04:33:45 -0400
commit195c45911e79c33cf0bb986721365fb06df5a153 (patch)
treeac0c9b6ef40bea7aa7ab0c5c3cb500eb510668fa /scripts/release.sh
Import Upstream version 1.8.7upstream/1.8.7
Diffstat (limited to 'scripts/release.sh')
-rwxr-xr-xscripts/release.sh167
1 files changed, 167 insertions, 0 deletions
diff --git a/scripts/release.sh b/scripts/release.sh
new file mode 100755
index 0000000..ef444e0
--- /dev/null
+++ b/scripts/release.sh
@@ -0,0 +1,167 @@
+#!/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
+}
+
+cleanup() {
+ cd "${ROOTDIR}"
+ echo Removing old build directory
+
+ if [ -d ./build ]; then
+ rm -rf ./build
+ fi
+}
+
+update() {
+ cd "${ROOTDIR}"
+ echo Updating version to ${NEWVERSION}
+
+ sed -i "s#\"${PYVERSION}\"#\"${NEWVERSION}\"#" "gallery_dl/version.py"
+ sed -i "s#v${OLDVERSION}#v${NEWVERSION}#" "${README}"
+}
+
+update-dev() {
+ cd "${ROOTDIR}"
+
+ IFS="." read MAJOR MINOR BUILD <<< "${NEWVERSION}"
+ BUILD=$((BUILD+1))
+ # update version to -dev
+ sed -i "s#\"${NEWVERSION}\"#\"${MAJOR}.${MINOR}.${BUILD}-dev\"#" "gallery_dl/version.py"
+ # add 'unreleased' line to changelog
+ sed -i "2i\\\n## Unreleased" "${CHANGELOG}"
+
+ git add "gallery_dl/version.py" "${CHANGELOG}"
+}
+
+build-python() {
+ cd "${ROOTDIR}"
+ echo Building bdist_wheel and sdist
+
+ python setup.py bdist_wheel sdist
+}
+
+build-linux() {
+ cd "${ROOTDIR}"
+ echo Building Linux executable
+
+ make executable
+}
+
+build-windows() {
+ cd "${ROOTDIR}/dist"
+ echo Building Windows executable
+
+ # remove old executable
+ rm -f "gallery-dl.exe"
+
+ # build windows exe in vm
+ ln -fs "${ROOTDIR}" /tmp/
+ vmstart "Windows 7" &
+ disown
+ while [ ! -e "gallery-dl.exe" ] ; do
+ sleep 5
+ done
+ sleep 2
+
+ # check exe version
+ OUTPUT="$(wine gallery-dl.exe --version)"
+ if [[ ! "${OUTPUT%?}" == "${NEWVERSION}" ]]; then
+ echo "exe version mismatch: ${OUTPUT} != ${NEWVERSION}"
+ exit 3
+ fi
+}
+
+sign() {
+ cd "${ROOTDIR}/dist"
+ echo Signing files
+
+ gpg --detach-sign --armor gallery_dl-${NEWVERSION}-py3-none-any.whl
+ gpg --detach-sign --armor gallery_dl-${NEWVERSION}.tar.gz
+ gpg --detach-sign --yes gallery-dl.exe
+ gpg --detach-sign --yes gallery-dl.bin
+}
+
+changelog() {
+ cd "${ROOTDIR}"
+ echo Updating "${CHANGELOG}"
+
+ # - replace "#NN" with link to actual issue
+ # - insert new version and date
+ sed -i \
+ -e "s*\([( ]\)#\([0-9]\+\)*\1[#\2](https://github.com/mikf/gallery-dl/issues/\2)*g" \
+ -e "s*^## [Uu]nreleased*## ${NEWVERSION} - $(date +%Y-%m-%d)*" \
+ "${CHANGELOG}"
+}
+
+supportedsites() {
+ cd "${ROOTDIR}"
+ echo Checking if "${SUPPORTEDSITES}" is up to date
+
+ ./scripts/supportedsites.py
+ if ! git diff --quiet "${SUPPORTEDSITES}"; then
+ echo "updated ${SUPPORTEDSITES} contains changes"
+ exit 4
+ fi
+}
+
+git-upload() {
+ cd "${ROOTDIR}"
+ echo Pushing changes to github
+
+ git add "gallery_dl/version.py" "${README}" "${CHANGELOG}"
+ git commit -S -m "release version ${NEWVERSION}"
+ git tag -s -m "version ${NEWVERSION}" "v${NEWVERSION}"
+ git push
+ git push origin "v${NEWVERSION}"
+}
+
+pypi-upload() {
+ cd "${ROOTDIR}/dist"
+ echo Uploading to PyPI
+
+ twine upload gallery_dl-${NEWVERSION}*
+}
+
+
+ROOTDIR="$(realpath "$(dirname "$0")/..")/"
+README="README.rst"
+CHANGELOG="CHANGELOG.md"
+SUPPORTEDSITES="./docs/supportedsites.rst"
+
+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]+(-[a-z]+(\.[0-9]+)?)?$ ]]; then
+ echo "invalid version: $NEWVERSION"
+ exit 2
+fi
+
+
+prompt
+supportedsites
+cleanup
+update
+build-python
+build-linux
+build-windows
+sign
+changelog
+git-upload
+pypi-upload
+update-dev