Merge "Script to update SDK devtools prebuilts."
diff --git a/update_jars.sh b/update_jars.sh
new file mode 100755
index 0000000..5b11ab0
--- /dev/null
+++ b/update_jars.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+set -e # fail on errors
+DRY="echo" # default to dry mode unless -f is specified
+
+if [[ "$1" == "-f" ]]; then
+ DRY=""
+fi
+
+# Define projects to build and files to copy.
+function list_projects() {
+ add_project manifmerger
+ add_project jobb etc/jobb etc/jobb.bat
+}
+
+# ----
+# List of targets to build, e.g. :jobb:jar
+BUILD_LIST=""
+# List of files to copy. Syntax: relative/dir (relative to src & dest) or src/rel/dir|dst/rel/dir.
+COPY_LIST=""
+
+function add_project() {
+ # $1=project name
+ # $2...=optional files to copy (relative to project dir)
+ local proj=$1
+ echo "## Getting properties for project $proj"
+ # Request to build the jar for that project
+ BUILD_LIST="$BUILD_LIST :$proj:jar"
+ # Copy the resulting JAR
+ local dst=$proj/$proj.jar
+ local src=`(cd ../../tools/base ; ./gradlew :$proj:properties | \
+ awk 'BEGIN { B=""; N=""; V="" } \
+ /^archivesBaseName:/ { N=$2 } \
+ /^buildDir:/ { B=$2 } \
+ /^version:/ { V=$2 } \
+ END { print B "/libs/" N "-" V ".jar" }'i )`
+ COPY_LIST="$COPY_LIST $src|$dst"
+
+ # Copy all the optiona files
+ shift
+ while [[ -n "$1" ]]; do
+ COPY_LIST="$COPY_LIST $proj/$1"
+ shift
+ done
+}
+
+function build() {
+ echo
+ if [[ -z "$BUILD_LIST" ]]; then
+ echo "Error: nothing to build."; exit 1;
+ else
+ echo "## Building $BUILD_LIST"
+ ( cd ../../tools/base ; ./gradlew $BUILD_LIST )
+ fi
+}
+
+function copy_files() {
+ echo
+ if [[ -z "$COPY_LIST" ]]; then
+ echo "Error: nothing to copy."; exit 1;
+ else
+ for f in $COPY_LIST; do
+ src="${f%%|*}" # strip part after | if any
+ dst="${f##*|}" # strip part before | if any
+ if [[ ${src:0:1} != "/" ]]; then src=../../tools/base/$src; fi
+ $DRY cp -v $src $dst
+ done
+ if [[ -n $DRY ]]; then
+ echo
+ echo "## WARNING: DRY MODE. Run with -f to actually copy files."
+ fi
+ fi
+}
+
+list_projects
+build
+copy_files