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