| #!/bin/bash |
| |
| OLD="$1" |
| NEW="$2" |
| |
| # sanity check in input args |
| if [ -z "$OLD" ] || [ -z "$NEW" ]; then |
| cat <<EOF |
| Usage: $0 <old> <new> |
| Changes the ADT plugin revision number. |
| Example: |
| cd sdk/eclipse |
| scripts/update_version.sh 0.1.2 0.2.3 |
| EOF |
| exit 1 |
| fi |
| |
| # sanity check on current dir |
| if [ `basename "$PWD"` != "eclipse" ]; then |
| echo "Please run this from sdk/eclipse." |
| exit 1 |
| fi |
| |
| # sanity check the new version number |
| if [[ "$NEW" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then |
| echo "## Version $NEW: seems valid." |
| else |
| echo "## Version $NEW: does not conform to major.mino.micro format." |
| exit 1 |
| fi |
| |
| function replace() { |
| if [[ -f "$1" ]]; then |
| echo "### Change $SED_OLD => $SED_NEW in $1" |
| if [[ $(uname) == "Linux" ]]; then |
| sed -i "s/$SED_OLD/$SED_NEW/g" "$1" |
| else |
| # sed on Mac doesn't handle -i the same way as on Linux |
| sed -i "" "s/$SED_OLD/$SED_NEW/g" "$1" |
| fi |
| fi |
| } |
| |
| # ---1--- Change Eclipse's qualified version numbers |
| # quote dots for regexps |
| SED_OLD="${OLD//./\.}\.qualifier" |
| SED_NEW="${NEW//./\.}\.qualifier" |
| |
| for i in $(grep -rl "$OLD" * | grep -E "\.xml$|\.MF$|\.product$"); do |
| if [[ -f "$i" && $(basename "$i") != "build.xml" ]]; then |
| replace "$i" |
| fi |
| done |
| |
| # ---2--- Change unqualified version numbers in specific files |
| SED_OLD="${OLD//./\.}" |
| SED_NEW="${NEW//./\.}" |
| for i in artifacts/*/pom.xml \ |
| monitor/build.gradle \ |
| plugins/com.android.ide.eclipse.adt.package/ide.product \ |
| plugins/com.android.ide.eclipse.monitor/monitor.product \ |
| plugins/com.android.ide.eclipse.monitor/plugin.properties \ |
| plugins/com.android.ide.eclipse.*/pom.xml \ |
| features/com.android.ide.eclipse.*/pom.xml \ |
| features/com.android.ide.eclipse.adt.package/feature.xml ; do |
| if grep -qs "$OLD" "$i"; then |
| replace "$i" |
| fi |
| done |
| |
| # do another grep for older version without the qualifier. We don't |
| # want to replace those automatically as it could be something else. |
| # Printing out occurence helps find ones to update manually, but exclude |
| # some known useless files. |
| echo |
| echo "#### ----------------" |
| echo "#### Remaining instances of $OLD" |
| echo |
| grep -r "$OLD" * | grep -v -E "/build.xml:|/javaCompiler\.\.\.args:" |
| |