git.iko.soy/typeable/servant
on master help sign in
Add bump-versions script
commit49289ecbb4f3bd081103aa51ae32c33d06d9c5df authorJulian K. Arni <jkarni@gmail.com> dateTue 26 May 2015, 12:18 (11 years ago) parent5c25c56
1 file changed+78
scripts/bump-versions.sh+78
scripts/bump-versions.shnew file+78
@@ -0,0 +1,78 @@
1+#!/bin/bash -
2+#===============================================================================
3+#
4+# FILE: bump-versions.sh
5+#
6+# USAGE: ./bump-versions.sh
7+#
8+# DESCRIPTION: Bump the versions for all servant packages
9+#
10+# OPTIONS: See usage
11+# REQUIREMENTS: bumper, bash >= 4
12+# CREATED: 11.05.2015 21:36
13+# REVISION: ---
14+#===============================================================================
15+
16+set -o nounset
17+set -o errexit
18+
19+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
20+DRY_RUN=false
21+POSITION="none"
22+SOURCES_TXT="$( dirname $DIR)/sources.txt"
23+
24+declare -a SOURCES
25+readarray -t SOURCES < "$SOURCES_TXT"
26+
27+usage () {
28+ echo " bump-versions <POSITION> [-d|--dry-run]"
29+ echo " | [-h|--help]"
30+ echo " Bumps the specified positional version of all servant packages."
31+ echo " POSITION is a number between 0 and 3, inclusive."
32+ exit 0
33+}
34+
35+join () { local IFS="$1"; shift; echo "$*"; }
36+
37+versions_equal () {
38+ local NUM=$(find . -name 'servant*.cabal' | xargs grep "^version:" | awk '{ print $2 }' | uniq -c | wc -l)
39+ if [ 1 -eq $NUM ] ; then
40+ return 0
41+ else
42+ echo "versions of packages are not all the same!" && exit 1
43+ fi
44+}
45+
46+if [ $# -eq 0 ] ; then
47+ echo "expecting one or more arguments. Got 0"
48+ usage
49+elif [ $# -gt 2 ] ; then
50+ echo "expecting one or more arguments"
51+ usage
52+fi
53+
54+versions_equal
55+
56+while [ "${1:-unset}" != "unset" ] ; do
57+ case "$1" in
58+ -h | --help) usage ;;
59+ -d | --dry-run) DRY_RUN=true
60+ shift ;;
61+ 0) if POSITION="none" ; then POSITION=0 ; else usage ; fi
62+ shift ;;
63+ 1) if POSITION="none" ; then POSITION=1 ; else usage ; fi
64+ shift ;;
65+ 2) if POSITION="none" ; then POSITION=2 ; else usage ; fi
66+ shift ;;
67+ 3) if POSITION="none" ; then POSITION=3 ; else usage ; fi
68+ shift ;;
69+ *) usage ;;
70+ esac
71+done
72+
73+if $DRY_RUN ; then
74+ bumper --dry-run -"$POSITION" $(join , "${SOURCES[@]}")
75+else
76+ bumper -"$POSITION" $(join , "${SOURCES[@]}")
77+fi
78+