xref: /aosp_15_r20/prebuilts/gradle-plugin/update-metalava-lint-deps.sh (revision fb9990eb91552a3181c2e47ccf5e64cc320e2e3f)
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