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