Add an update.sh script

Add a script that downloads a new version of error_prone.  Also
switch the source URL to sonatype to match the URL that was used
in the internal version, and remove error_prone_annotations source
jar since it is unnecessary.

Bug: 64489631
Test: running update.sh with current version only updates last_upgrade_date
Test: running update.sh with new version updates all fields
Change-Id: If7ab1a88dc4f0e78c54c06e079bad9a0f3dd4581
diff --git a/error_prone/METADATA b/error_prone/METADATA
index 10443a8..4a8d534 100644
--- a/error_prone/METADATA
+++ b/error_prone/METADATA
@@ -10,11 +10,11 @@
   }
   url {
     type: ARCHIVE
-    value: "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.0.19/error_prone_core-2.0.19-with-dependencies.jar"
+    value: "https://oss.sonatype.org/service/local/repositories/releases/content/com/google/errorprone/error_prone_core/2.0.19/error_prone_core-2.0.19-with-dependencies.jar"
   }
   url {
     type: ARCHIVE
-    value: "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.0.19/error_prone_annotations-2.0.19.jar"
+    value: "https://oss.sonatype.org/service/local/repositories/releases/content/com/google/errorprone/error_prone_annotations/2.0.19/error_prone_annotations-2.0.19.jar"
   }
   version: "2.0.19"
   last_upgrade_date { year: 2017 month: 8 day: 28 }
diff --git a/error_prone/error_prone_annotations-2.0.19-sources.jar b/error_prone/error_prone_annotations-2.0.19-sources.jar
deleted file mode 100644
index c673af4..0000000
--- a/error_prone/error_prone_annotations-2.0.19-sources.jar
+++ /dev/null
Binary files differ
diff --git a/error_prone/error_prone_annotations-2.0.19-sources.jar.asc b/error_prone/error_prone_annotations-2.0.19-sources.jar.asc
deleted file mode 100644
index abb4868..0000000
--- a/error_prone/error_prone_annotations-2.0.19-sources.jar.asc
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1
-
-iQIcBAABAgAGBQJYyxviAAoJEJolnH7mNsXtV0oQAIy4CnAztRtdGUB45GJi6/Mx
-dXqWtgSFZyBUxsQF7ZlkaOis/UGx1Nykwz0ertbcB5rLwJUkROSWGR9PAJY/v3Qr
-VhG2J8F5D7GVJCWqPoeX7+/uxzy6ceUD+NByRkyNctyleQuVsLfQY/9lpw9aHnm3
-ayKSLrEcV1t6vRQGh5q+bgymI9G7u+H7uix3KiV/fL6g16vLmzGWoYHzWQU3wk7v
-lqvKAe5m0YccxGKZOgaOFw1y8zjFvnovpuLthnd9gmp+9PZ/JzYEGjxXTT4X9I6v
-iYvOu/aqSio0S+Rx6mPw2AOw91ETEwl1tVhxjhvGL0XdfXBu9UPxaWuS2NXgi0aR
-kZZCjSErvWYZCHA+U7/3oeD+r7T/lp9riR7zUiTc/V5xV+9wctzQ0FEGGujzND4q
-l17l4+cv8Cp3U+JYwo/PSMKRFbTpEst21YnTYQN078gAo7BKDsOY0Pk6JU43TLzP
-ybNVZ/X/zGWDHSLiOmAQqyX2aXm1WakBaDwLSV5sKfCykgZgUDdQGLDAO0RbUsMY
-94mkDvCwLENp+izY7owDa2ZgUXmj0nxGhLhmL5hnEI+MOQtiykn/U64a1LxeEQAM
-QQxvKB1VIEQGS3edmsy+mGI2nt5xbCzJjQygB4qC2FBqsnA5vQ+XtPlOqwTsdEaa
-EklzuDKlrv8odLFK2rbm
-=qpuo
------END PGP SIGNATURE-----
diff --git a/error_prone/error_prone_annotations-2.0.19-sources.jar.sha1 b/error_prone/error_prone_annotations-2.0.19-sources.jar.sha1
deleted file mode 100644
index e91971d..0000000
--- a/error_prone/error_prone_annotations-2.0.19-sources.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-86d6c004b152659db486989443f56b6fc23fb4da
\ No newline at end of file
diff --git a/javac/METADATA b/javac/METADATA
index cfeedc8..1313ab4 100644
--- a/javac/METADATA
+++ b/javac/METADATA
@@ -9,7 +9,7 @@
   }
   url {
     type: ARCHIVE
-    value: "https://repo1.maven.org/maven2/com/google/errorprone/javac/9-dev-r3297-4/javac-9-dev-r3297-4.jar"
+    value: "https://oss.sonatype.org/service/local/repositories/releases/content/com/google/errorprone/javac/9-dev-r3297-4/javac-9-dev-r3297-4.jar"
   }
   version: "9-dev-r3297-4"
   last_upgrade_date { year: 2017 month: 8 day: 16 }
diff --git a/update.sh b/update.sh
new file mode 100755
index 0000000..992d2d3
--- /dev/null
+++ b/update.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+# Force stop on first error.
+set -e
+if [ $# -ne 2 ]; then
+    echo "$0 <error prone version> <error prone javac version>" >&2
+    exit 1;
+fi
+if [ -z "$ANDROID_BUILD_TOP" ]; then
+    echo "Missing environment variables. Did you run build/envsetup.sh and lunch?" >&2
+    exit 1
+fi
+EP_VERSION="$1"
+JAVAC_VERSION="$2"
+JAR_REPO="https://oss.sonatype.org/service/local/repositories/releases/content/com/google/errorprone"
+EP_JAR_URL="${JAR_REPO}/error_prone_core/${EP_VERSION}/error_prone_core-${EP_VERSION}-with-dependencies.jar"
+EP_ANNO_JAR_URL="${JAR_REPO}/error_prone_annotations/${EP_VERSION}/error_prone_annotations-${EP_VERSION}.jar"
+JAVAC_JAR_URL="${JAR_REPO}/javac/${JAVAC_VERSION}/javac-${JAVAC_VERSION}.jar"
+JAVAC_SOURCES_JAR_URL="${JAR_REPO}/javac/${JAVAC_VERSION}/javac-${JAVAC_VERSION}-sources.jar"
+TOOLS_DIR=$(dirname $0)
+
+function update_jar {
+    typeset VERSION="$1" JAR_URL="$2" DIR="$3" JAR_FILE="$4"
+    typeset JAR_URL_PREFIX=$(dirname $(dirname ${JAR_URL}))
+
+    # Update the version and binary JAR URL.
+    perl -pi -e "s|version: .*|version: \"${VERSION}\"|; s|\"${JAR_URL_PREFIX}.*\"|\"${JAR_URL}\"|" "$DIR/METADATA"
+
+    # Update the last upgrade date
+    perl -pi -e "s|last_upgrade_date.*|last_upgrade_date { year: $(date +%Y) month: $(date +%-m) day: $(date +%-d)}|" "$DIR/METADATA"
+
+    # Get the JAR.
+    wget ${JAR_URL} -O ${DIR}/$(basename ${JAR_URL})
+    wget ${JAR_URL}.sha1 -O ${DIR}/$(basename ${JAR_URL}).sha1
+    wget ${JAR_URL}.asc -O ${DIR}/$(basename ${JAR_URL}).asc
+}
+
+rm -f error_prone/*.jar*
+rm -f javac/*.jar*
+
+update_jar "${EP_VERSION}" "${EP_JAR_URL}" "${TOOLS_DIR}/error_prone"
+update_jar "${EP_VERSION}" "${EP_ANNO_JAR_URL}" "${TOOLS_DIR}/error_prone"
+update_jar "${JAVAC_VERSION}" "${JAVAC_SOURCES_JAR_URL}" "${TOOLS_DIR}/javac"
+update_jar "${JAVAC_VERSION}" "${JAVAC_JAR_URL}" "${TOOLS_DIR}/javac"
+
+# Update the versions for soong
+perl -pi -e "\
+    s|\"(external/error_prone/javac/javac).*\"|\"\\1-${JAVAC_VERSION}.jar\"|;\
+    s|\"(external/error_prone/error_prone/error_prone_core).*\"|\"\\1-${EP_VERSION}-with-dependencies.jar\"|;\
+    s|\"(external/error_prone/error_prone/error_prone_annotations).*\"|\"\\1-${EP_VERSION}.jar\"|;\
+" "$TOOLS_DIR/soong/error_prone.go"