mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-27 19:57:37 +00:00
107 lines
3.6 KiB
Bash
Executable File
107 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -e
|
||
#set -x
|
||
|
||
# Helper script for the release process
|
||
|
||
#############################################################################
|
||
# WARNING: you have to know what you are doing before executing this script #
|
||
# #
|
||
# You have to edit Variables section before anything else #
|
||
#############################################################################
|
||
|
||
# Better to test on your own remote repo first !
|
||
|
||
# Copy this script outside your repo
|
||
# cp ./scripts/do_release.sh ~
|
||
# edit it:
|
||
# gvim ~/do_release.sh
|
||
# run it:
|
||
# ~/do_release.sh
|
||
|
||
# comment out this line after editing following variables
|
||
echo "Copy this script outside the source tree, and modify it !"; exit 1
|
||
|
||
# Variables
|
||
|
||
PICARD_REPO_PATH=/home/zas/src/picard_zas
|
||
PICARD_REMOTE=origin
|
||
PICARD_VERSION="1.3"
|
||
PICARD_VERSION_TUPLE="(1, 3, 0, 'final', 0)"
|
||
PICARD_NEXT_VERSION="1.4"
|
||
PICARD_NEXT_VERSION_TUPLE="(1, 4, 0, 'dev', 1)"
|
||
PICARD_RELEASE_TAG="release-$PICARD_VERSION"
|
||
|
||
|
||
echo "=== Preparing for $PICARD_VERSION release ==="
|
||
|
||
echo "=== Ensure git repository tree is clean ==="
|
||
|
||
cd "$PICARD_REPO_PATH" || exit 1
|
||
git fetch $PICARD_REMOTE && git checkout master && git reset --hard $PICARD_REMOTE/master && git clean -f -d
|
||
git tag "before-release-$PICARD_VERSION" --force
|
||
|
||
echo "=== Remove old compiled modules in case of ==="
|
||
find "$PICARD_REPO_PATH" -type f -name '*.pyc' -exec rm -f {} \;
|
||
|
||
|
||
echo "=== Remove any BOM nasty bytes from files ==="
|
||
|
||
# this shouldn't be needed, but better to check before releasing
|
||
git ls-tree --full-tree -r HEAD --name-only |while read f; do sed -i '1s/^\xEF\xBB\xBF//' "$f"; done && git diff --quiet || git commit -a -m 'Remove nasty BOM bytes'
|
||
|
||
|
||
echo "=== Get latest translations from Transifex ==="
|
||
|
||
python setup.py get_po_files && git diff --quiet || git commit -m 'Update .po files' -- po/
|
||
|
||
|
||
echo "=== Ensure generated consts are in sync with MB server ==="
|
||
|
||
python setup.py update_constants && git diff --quiet || git commit -a -m 'Update constants' -- picard/const/attributes.py picard/const/countries.py
|
||
|
||
|
||
echo "=== Be sure picard.pot is in sync with sources ==="
|
||
|
||
python setup.py regen_pot_file && git diff --quiet || git commit -m 'Update pot file' -- po/picard.pot
|
||
|
||
|
||
echo "=== Set date in NEWS.txt ==="
|
||
|
||
OLD=$PICARD_VERSION; NEW=$PICARD_NEXT_VERSION; \
|
||
sed -i -e "s/^Version [^ ]\+ - xxxx-xx-xx\s*$/Version $OLD - "$(date +%F -u)"/" -e "1s/^/Version $NEW - xxxx-xx-xx\n\n/" NEWS.txt \
|
||
&& git diff --quiet || git commit -m "Update release date for version $OLD" -- NEWS.txt
|
||
|
||
|
||
echo "=== Update Picard version ==="
|
||
|
||
sed -i "s/^PICARD_VERSION = \(.*\)$/PICARD_VERSION = $PICARD_VERSION_TUPLE/" picard/__init__.py \
|
||
&& python setup.py test && git diff --quiet || git commit -m "Update version to $PICARD_VERSION" -- picard/__init__.py
|
||
|
||
|
||
echo "=== Tag new version ==="
|
||
|
||
git tag -s "$PICARD_RELEASE_TAG" -m "Release $PICARD_VERSION"
|
||
|
||
echo "=== Update Picard version to next dev ==="
|
||
|
||
sed -i "s/^PICARD_VERSION = \(.*\)$/PICARD_VERSION = $PICARD_NEXT_VERSION_TUPLE/" picard/__init__.py \
|
||
&& python setup.py test && git diff --quiet || git commit -m "Update version to $PICARD_NEXT_VERSION dev" -- picard/__init__.py
|
||
|
||
echo "=== Push new commits to master branch ==="
|
||
|
||
echo "**** TO PUSH ****"
|
||
cat <<-EOF
|
||
git push "$PICARD_REMOTE" master:master
|
||
git push "$PICARD_REMOTE" tag "$PICARD_RELEASE_TAG"
|
||
EOF
|
||
|
||
echo "**** To revert after push ****"
|
||
cat <<-EOF
|
||
git tag -d "release-$PICARD_VERSION"
|
||
git reset --hard "before-release-$PICARD_VERSION"
|
||
git push "$PICARD_REMOTE" :"$TAG"
|
||
git push "$PICARD_REMOTE" "before-release-$PICARD_VERSION":master --force
|
||
EOF
|