-
Notifications
You must be signed in to change notification settings - Fork 4
/
release.sh
executable file
·40 lines (30 loc) · 1010 Bytes
/
release.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
# Usage: ./release.sh 1.0.3
#
# Uploads the latest master as release "1.0.3" to PyPI
REPOSITORY=${REPOSITORY:-origin}
set -exo pipefail
echo "Switching to a clean master..."
git fetch $REPOSITORY
git checkout $REPOSITORY/master
if [ ! -z "$(git status --porcelain --ignored)" ]; then
echo "Working directory is not completely clean. Please run git clean -fdx and git reset --hard."
exit 1
fi
echo "Setting version..."
echo "$1" > version
if [ ! -z "$(git status --porcelain --ignored)" ]; then
echo "Committing version change and pushing to $REPOSITORY..."
git add version
git commit -m "Release $1"
git push $REPOSITORY HEAD:master
fi
echo "Creating tag and pushing to $REPOSITORY..."
git tag "$1"
git push --tags $REPOSITORY "$1"
echo "Building for PyPI..."
python2 setup.py bdist_wheel
python3 setup.py bdist_wheel
echo "Pushing to PyPI..."
twine upload dist/*
echo "Please go to https://github.com/MCLF/mclf/releases/new and create a release from the tag $1."