Browse Source

Script to bump version

Ask Solem 15 years ago
parent
commit
2c1b0e748b
1 changed files with 61 additions and 0 deletions
  1. 61 0
      contrib/bump

+ 61 - 0
contrib/bump

@@ -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 $*
+