1*fb9990ebSAndroid Build Coastguard Worker#!/bin/bash 2*fb9990ebSAndroid Build Coastguard Worker 3*fb9990ebSAndroid Build Coastguard Workerset -ex 4*fb9990ebSAndroid Build Coastguard Worker 5*fb9990ebSAndroid Build Coastguard Workerif [[ $# != 2 ]]; then 6*fb9990ebSAndroid Build Coastguard Worker echo "$0 <new version> <bug id>" >&2 7*fb9990ebSAndroid Build Coastguard Worker exit 1 8*fb9990ebSAndroid Build Coastguard Workerfi 9*fb9990ebSAndroid Build Coastguard Worker 10*fb9990ebSAndroid Build Coastguard WorkerCURRENT_LINT_VERSION=$(grep release com/android/tools/lint/lint/maven-metadata.xml | sed "s|.*<release>||;s|</release>||") 11*fb9990ebSAndroid Build Coastguard WorkerNEW_LINT_VERSION=$1 12*fb9990ebSAndroid Build Coastguard WorkerBUG_ID=$2 13*fb9990ebSAndroid Build Coastguard Worker 14*fb9990ebSAndroid Build Coastguard Workerecho "Upgrading metalava lint dependencies from $CURRENT_LINT_VERSION to $NEW_LINT_VERSION" 15*fb9990ebSAndroid Build Coastguard Worker 16*fb9990ebSAndroid Build Coastguard WorkerMVN_DIR=$(mktemp -d) 17*fb9990ebSAndroid Build Coastguard Workerif [[ ! "$MVN_DIR" || ! -d "$MVN_DIR" ]]; then 18*fb9990ebSAndroid Build Coastguard Worker echo "Could not create temp dir into which maven can be downloaded" >&2 19*fb9990ebSAndroid Build Coastguard Worker exit 1 20*fb9990ebSAndroid Build Coastguard Workerfi 21*fb9990ebSAndroid Build Coastguard Worker 22*fb9990ebSAndroid Build Coastguard Workerfunction delete_mvn_dir { 23*fb9990ebSAndroid Build Coastguard Worker rm -fr ${MVN_DIR} 24*fb9990ebSAndroid Build Coastguard Worker} 25*fb9990ebSAndroid Build Coastguard Worker 26*fb9990ebSAndroid Build Coastguard Workertrap delete_mvn_dir EXIT 27*fb9990ebSAndroid Build Coastguard Worker 28*fb9990ebSAndroid Build Coastguard WorkerMAVEN_VERSION=3.9.4 29*fb9990ebSAndroid Build Coastguard Worker# Download and unzip Apache Maven 30*fb9990ebSAndroid Build Coastguard Worker( 31*fb9990ebSAndroid Build Coastguard Worker cd $MVN_DIR 32*fb9990ebSAndroid Build Coastguard Worker curl https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.zip --output apache-maven-${MAVEN_VERSION}-bin.zip 33*fb9990ebSAndroid Build Coastguard Worker unzip apache-maven-${MAVEN_VERSION}-bin.zip 34*fb9990ebSAndroid Build Coastguard Worker) 35*fb9990ebSAndroid Build Coastguard Worker 36*fb9990ebSAndroid Build Coastguard WorkerMVN_BIN_DIR=$(find $MVN_DIR -name bin) 37*fb9990ebSAndroid Build Coastguard Worker 38*fb9990ebSAndroid Build Coastguard WorkerLINT_MODULES=( 39*fb9990ebSAndroid Build Coastguard Worker "com.android.tools.lint:lint-api" 40*fb9990ebSAndroid Build Coastguard Worker "com.android.tools.lint:lint-checks" 41*fb9990ebSAndroid Build Coastguard Worker "com.android.tools.lint:lint-gradle" 42*fb9990ebSAndroid Build Coastguard Worker "com.android.tools.lint:lint" 43*fb9990ebSAndroid Build Coastguard Worker "com.android.tools:common" 44*fb9990ebSAndroid Build Coastguard Worker "com.android.tools:sdk-common" 45*fb9990ebSAndroid Build Coastguard Worker "com.android.tools:sdklib" 46*fb9990ebSAndroid Build Coastguard Worker) 47*fb9990ebSAndroid Build Coastguard Worker 48*fb9990ebSAndroid Build Coastguard Worker# Add the bin directory containing maven to the path. 49*fb9990ebSAndroid Build Coastguard Workerexport PATH="$PATH:$MVN_BIN_DIR" 50*fb9990ebSAndroid Build Coastguard Worker 51*fb9990ebSAndroid Build Coastguard Worker# Update all the lint modules. 52*fb9990ebSAndroid Build Coastguard Workerfor i in ${LINT_MODULES[@]} 53*fb9990ebSAndroid Build Coastguard Workerdo 54*fb9990ebSAndroid Build Coastguard Worker ../tools/import-maven-artifacts.sh $i:$NEW_LINT_VERSION 55*fb9990ebSAndroid Build Coastguard Workerdone 56*fb9990ebSAndroid Build Coastguard Worker 57*fb9990ebSAndroid Build Coastguard Worker# Unused dependencies 58*fb9990ebSAndroid Build Coastguard Worker# The following directories contain dependencies of the above LINT_MODULES 59*fb9990ebSAndroid Build Coastguard Worker# that are not required and so can be deleted. 60*fb9990ebSAndroid Build Coastguard WorkerUNUSED_DEPS=( 61*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/analytics-library" 62*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/annotations" 63*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/build/aapt2-proto" 64*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/build/builder-model" 65*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/ddms" 66*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/dvlib" 67*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/layoutlib" 68*fb9990ebSAndroid Build Coastguard Worker "com/android/tools/play-sdk-proto" 69*fb9990ebSAndroid Build Coastguard Worker "org/apache/commons/compress/harmony/pack200" 70*fb9990ebSAndroid Build Coastguard Worker) 71*fb9990ebSAndroid Build Coastguard Workerrm -fr ${UNUSED_DEPS[@]} 72*fb9990ebSAndroid Build Coastguard Worker 73*fb9990ebSAndroid Build Coastguard Worker# Delete the old dependencies 74*fb9990ebSAndroid Build Coastguard Workerfind -name "${CURRENT_LINT_VERSION}" -type d | xargs rm -fr 75*fb9990ebSAndroid Build Coastguard Worker 76*fb9990ebSAndroid Build Coastguard Worker# Change Android.bp to use new versions 77*fb9990ebSAndroid Build Coastguard Workerperl -pi -e "s/$CURRENT_LINT_VERSION/$NEW_LINT_VERSION/g" Android.bp 78*fb9990ebSAndroid Build Coastguard Worker 79*fb9990ebSAndroid Build Coastguard Worker# Add the changes to git. 80*fb9990ebSAndroid Build Coastguard Workergit add -u 81*fb9990ebSAndroid Build Coastguard Workerfind -name "${NEW_LINT_VERSION}" -type d | xargs git add 82*fb9990ebSAndroid Build Coastguard Worker 83*fb9990ebSAndroid Build Coastguard Workergit commit -m "Upgrade metalava lint prebuilts to $NEW_LINT_VERSION 84*fb9990ebSAndroid Build Coastguard Worker 85*fb9990ebSAndroid Build Coastguard Worker$0 $NEW_LINT_VERSION $BUG_ID 86*fb9990ebSAndroid Build Coastguard Worker 87*fb9990ebSAndroid Build Coastguard WorkerBug: $BUG_ID 88*fb9990ebSAndroid Build Coastguard WorkerTest: m update-api 89*fb9990ebSAndroid Build Coastguard Worker" 90*fb9990ebSAndroid Build Coastguard Worker 91*fb9990ebSAndroid Build Coastguard Workerecho "Please run the following to test before submitting" 92*fb9990ebSAndroid Build Coastguard Workerecho " m update-api" 93