1#!/bin/bash 2# Force stop on first error. 3set -e 4if [ $# -ne 2 -a $# -ne 3 ]; then 5 echo "$0 <error prone version> [checkerframework version]" >&2 6 exit 1; 7fi 8if [ -z "$ANDROID_BUILD_TOP" ]; then 9 echo "Missing environment variables. Did you run build/envsetup.sh and lunch?" >&2 10 exit 1 11fi 12EP_VERSION="$1" 13# checkerframework 14CF_VERSION="$2" 15JAR_REPO="https://oss.sonatype.org/service/local/repositories/releases/content/com/google/errorprone" 16EP_JAR_URL="${JAR_REPO}/error_prone_core/${EP_VERSION}/error_prone_core-${EP_VERSION}-with-dependencies.jar" 17EP_ANNO_JAR_URL="${JAR_REPO}/error_prone_annotations/${EP_VERSION}/error_prone_annotations-${EP_VERSION}.jar" 18EP_TYPE_ANNO_JAR_URL="${JAR_REPO}/error_prone_type_annotations/${EP_VERSION}/error_prone_type_annotations-${EP_VERSION}.jar" 19EP_TEST_HELPERS_JAR_URL="${JAR_REPO}/error_prone_test_helpers/${EP_VERSION}/error_prone_test_helpers-${EP_VERSION}.jar" 20CF_DATAFLOW_JAR_URL="https://repo1.maven.org/maven2/org/checkerframework/dataflow-errorprone/${CF_VERSION}/dataflow-errorprone-${CF_VERSION}.jar" 21CF_DATAFLOW_SOURCES_JAR_URL="https://repo1.maven.org/maven2/org/checkerframework/dataflow-errorprone/${CF_VERSION}/dataflow-errorprone-${CF_VERSION}-sources.jar" 22TOOLS_DIR=$(dirname $0) 23 24function update_jar { 25 typeset VERSION="$1" JAR_URL="$2" DIR="$3" JAR_FILE="$4" 26 typeset JAR_URL_PREFIX=$(dirname $(dirname ${JAR_URL})) 27 28 # Update the version and binary JAR URL. 29 perl -pi -e "s|version: .*|version: \"${VERSION}\"|; s|\"${JAR_URL_PREFIX}.*\"|\"${JAR_URL}\"|" "$DIR/METADATA" 30 31 # Update the last upgrade date 32 perl -pi -e "s|last_upgrade_date.*|last_upgrade_date { year: $(date +%Y) month: $(date +%-m) day: $(date +%-d)}|" "$DIR/METADATA" 33 34 # Get the JAR. 35 wget ${JAR_URL} -O ${DIR}/$(basename ${JAR_URL}) 36 wget ${JAR_URL}.sha1 -O ${DIR}/$(basename ${JAR_URL}).sha1 37 wget ${JAR_URL}.asc -O ${DIR}/$(basename ${JAR_URL}).asc 38} 39 40rm -f error_prone/*.jar* 41 42update_jar "${EP_VERSION}" "${EP_JAR_URL}" "${TOOLS_DIR}/error_prone" 43update_jar "${EP_VERSION}" "${EP_ANNO_JAR_URL}" "${TOOLS_DIR}/error_prone" 44update_jar "${EP_VERSION}" "${EP_TYPE_ANNO_JAR_URL}" "${TOOLS_DIR}/error_prone" 45update_jar "${EP_VERSION}" "${EP_TEST_HELPERS_JAR_URL}" "${TOOLS_DIR}/error_prone" 46 47# Update the versions in the build file 48perl -pi -e "\ 49 s|\"(error_prone/error_prone_core).*\"|\"\\1-${EP_VERSION}-with-dependencies.jar\"|;\ 50 s|\"(error_prone/error_prone_annotations).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 51 s|\"(error_prone/error_prone_type_annotations).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 52 s|\"(error_prone/error_prone_test_helpers).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 53" "$TOOLS_DIR/Android.bp" 54 55# Update the versions for soong 56perl -pi -e "\ 57 s|\"(external/error_prone/error_prone/error_prone_core).*\"|\"\\1-${EP_VERSION}-with-dependencies.jar\"|;\ 58 s|\"(external/error_prone/error_prone/error_prone_annotations).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 59 s|\"(external/error_prone/error_prone/error_prone_type_annotations).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 60 s|\"(external/error_prone/error_prone/error_prone_test_helpers).*\"|\"\\1-${EP_VERSION}.jar\"|;\ 61" "$TOOLS_DIR/soong/error_prone.go" 62 63if [ "${CF_VERSION}" != '' ]; then 64 rm -f checkerframework/*.jar* 65 update_jar "${CF_VERSION}" "${CF_DATAFLOW_JAR_URL}" "${TOOLS_DIR}/checkerframework" 66 update_jar "${CF_VERSION}" "${CF_DATAFLOW_SOURCES_JAR_URL}" "${TOOLS_DIR}/checkerframework" 67 perl -pi -e "\ 68 s|\"(external/error_prone/checkerframework/dataflow-errorprone).*\"|\"\\1-${CF_VERSION}.jar\"|;\ 69 " "$TOOLS_DIR/soong/error_prone.go" 70 perl -pi -e "s|\"(dataflow-errorprone).*\"|\"\\1-${CF_VERSION}.jar\"|;" "${TOOLS_DIR}/checkerframework/Android.bp" 71fi 72