1
0
mirror of https://github.com/mikf/gallery-dl.git synced 2024-11-25 04:02:32 +01:00
gallery-dl/scripts/release.sh

169 lines
3.6 KiB
Bash
Raw Normal View History

#!/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
}
2017-03-31 17:04:44 +02:00
cleanup() {
cd "${ROOTDIR}"
echo Removing old build directory
2017-03-31 17:04:44 +02:00
if [ -d ./build ]; then
rm -rf ./build
fi
}
update() {
cd "${ROOTDIR}"
2017-03-31 17:04:44 +02:00
echo Updating version to ${NEWVERSION}
sed -i "s#\"${PYVERSION}\"#\"${NEWVERSION}\"#" "gallery_dl/version.py"
sed -i "s#v${OLDVERSION}#v${NEWVERSION}#" "${README}"
make man
}
update-dev() {
cd "${ROOTDIR}"
2017-03-31 17:04:44 +02:00
IFS="." read MAJOR MINOR BUILD <<< "${NEWVERSION}"
BUILD=$((BUILD+1))
# update version to -dev
2017-03-31 17:04:44 +02:00
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}"
2017-03-31 17:04:44 +02:00
echo Building bdist_wheel and sdist
python setup.py bdist_wheel sdist
2017-06-28 09:42:49 +02:00
}
build-linux() {
cd "${ROOTDIR}"
echo Building Linux executable
make executable
}
build-windows() {
cd "${ROOTDIR}/dist"
2017-03-31 17:04:44 +02:00
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
2017-03-31 17:04:44 +02:00
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"
2017-03-31 17:04:44 +02:00
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}"
2017-03-31 17:04:44 +02:00
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}"
2017-03-31 17:04:44 +02:00
git push
git push origin "v${NEWVERSION}"
}
pypi-upload() {
cd "${ROOTDIR}/dist"
2017-03-31 17:04:44 +02:00
echo Uploading to PyPI
2017-03-31 17:04:44 +02:00
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
2017-03-31 17:04:44 +02:00
cleanup
update
build-python
build-linux
build-windows
sign
changelog
git-upload
pypi-upload
update-dev