blob: 76d3dc52b5d36c8a1375c82b0b6cb9aa940f5210 [file] [log] [blame]
#!/bin/bash
set -eu
cd "$( dirname "${BASH_SOURCE[0]}" )/.."
version=
version_next=
main() {
local branch="${1-$(git symbolic-ref --short HEAD)}"
version="$(PYTHONPATH=$PWD/python2 python2 -c 'import httplib2; print(httplib2.__version__)')"
printf "\nbranch: %s httplib2.__version__: '%s'\n" $branch $version >&2
if [[ "$branch" != "master" ]]; then
echo "Must be on master" >&2
exit 1
fi
if [[ -n "$(git status --short -uall)" ]]; then
echo "Tree must be clean. git status:" >&2
echo "" >&2
git status --short -uall
echo "" >&2
exit 1
fi
confirm "Continue? [yN] " || exit 1
echo "Creating tag v$version" >&2
if ! git tag "v$version"; then
echo "git tag failed " >&2
confirm "Continue still? [yN] " || exit 1
fi
echo "Building package" >&2
find . -name '*.pyc' -o -name '*.pyo' -o -name '*.orig' -delete
rm -rf python{2,3}/.cache
rm -rf build dist
# TODO: sdist bdist_wheel
# but wheels don't roll well with our 2/3 split code base
local venv=./venv-release
if [[ ! -d "$venv" ]] ; then
virtualenv $venv
$venv/bin/pip install -U pip setuptools wheel twine
fi
$venv/bin/python setup.py sdist
if confirm "Upload to PyPi? [Yn] "; then
$venv/bin/twine upload dist/* || exit 1
fi
git push --tags
}
confirm() {
local reply
local prompt="$1"
read -n1 -p "$prompt" reply >&2
echo "" >&2
rc=0
local default_y=" \[Yn\] $"
if [[ -z "$reply" ]] && [[ "$prompt" =~ $default_y ]]; then
reply="y"
fi
[[ "$reply" != "y" ]] && rc=1
return $rc
}
main "$@"