|
@@ -0,0 +1,61 @@
|
|
|
+#!/bin/bash
|
|
|
+# Bump version of python package in current directory.
|
|
|
+# Updates version in package/__init__.py, and version embedded as
|
|
|
+# reStructuredtext in README.
|
|
|
+#
|
|
|
+# Usage: BUMP package_name [new_version] [-c]
|
|
|
+# If new_version is not specified the release part of the version will
|
|
|
+# be incremented.
|
|
|
+# if -c is set it will be commited and pushed.
|
|
|
+
|
|
|
+bump_version () {
|
|
|
+ commit=0
|
|
|
+ while getopts "c" flag; do
|
|
|
+ case $flag in
|
|
|
+ c)
|
|
|
+ commit=1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ done
|
|
|
+ shift $(($OPTIND - 1))
|
|
|
+ package="$1"
|
|
|
+ new_version="$2"
|
|
|
+ [ $commit ] && git pull origin master
|
|
|
+ current=$(python -c "
|
|
|
+import $package
|
|
|
+print($package.__version__)
|
|
|
+ ")
|
|
|
+ cur_major=$(echo "$current" | cut -d. -f 1)
|
|
|
+ cur_minor=$(echo "$current" | cut -d. -f 2)
|
|
|
+ cur_release=$(echo "$current" | cut -d. -f 3)
|
|
|
+ if [ -z "$new_version" ]; then
|
|
|
+ new_version="$cur_major.$cur_minor.$(($cur_release + 1))";
|
|
|
+ new_as_tuple="($cur_major, $cur_minor, $(($cur_release + 1)))";
|
|
|
+ fi
|
|
|
+ new_major=$(echo "$new_version" | cut -d. -f 1)
|
|
|
+ new_minor=$(echo "$new_version" | cut -d. -f 2)
|
|
|
+ new_release=$(echo "$new_version" | cut -d. -f 3)
|
|
|
+
|
|
|
+ new_as_tuple="($new_major, $new_minor, $new_release)"
|
|
|
+
|
|
|
+ echo "$package: $current -> $new_version"
|
|
|
+
|
|
|
+ perl -pi -e"s/(VERSION\s*=\s*)\((.+?)\);?/\$1$new_as_tuple/" \
|
|
|
+ "$package/__init__.py"
|
|
|
+ perl -pi -e"s/(:Version:)\s*(.+?)(\s*$)/\$1 $new_version\$3/i" README
|
|
|
+
|
|
|
+ [ $commit ] && (
|
|
|
+ git commit "$package/__init__.py" README \
|
|
|
+ -m "Bumped version to $new_version";
|
|
|
+ git push;
|
|
|
+ )
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+if [ -z "$1" ]; then
|
|
|
+ echo "Usage: $(basename $0) package_name [new_version]"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+bump_version $*
|
|
|
+
|