xref: /aosp_15_r20/external/dagger2/android-annotation-stubs/gen_annotations.sh (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1*f585d8a3SJacky Wang#!/bin/bash
2*f585d8a3SJacky Wang
3*f585d8a3SJacky Wangdeclare -A INNER
4*f585d8a3SJacky Wangdeclare -A PARAMETER
5*f585d8a3SJacky Wangdeclare -A IMPORT
6*f585d8a3SJacky Wang
7*f585d8a3SJacky WangANNOTATIONS=(
8*f585d8a3SJacky Wang    org.checkerframework.checker.nullness.compatqual.NullableDecl
9*f585d8a3SJacky Wang    net.ltgt.gradle.incap.IncrementalAnnotationProcessor
10*f585d8a3SJacky Wang)
11*f585d8a3SJacky Wang
12*f585d8a3SJacky WangPARAMETER["net.ltgt.gradle.incap.IncrementalAnnotationProcessor"]="IncrementalAnnotationProcessorType"
13*f585d8a3SJacky WangIMPORT["net.ltgt.gradle.incap.IncrementalAnnotationProcessor"]="net.ltgt.gradle.incap.IncrementalAnnotationProcessorType"
14*f585d8a3SJacky Wang
15*f585d8a3SJacky Wangfor a in ${ANNOTATIONS[@]}; do
16*f585d8a3SJacky Wang    package=${a%.*}
17*f585d8a3SJacky Wang    class=${a##*.}
18*f585d8a3SJacky Wang    dir=$(dirname $0)/src/${package//.//}
19*f585d8a3SJacky Wang    file=${class}.java
20*f585d8a3SJacky Wang    inner=${INNER[$a]}
21*f585d8a3SJacky Wang    parameter=${PARAMETER[$a]}
22*f585d8a3SJacky Wang    import=
23*f585d8a3SJacky Wang
24*f585d8a3SJacky Wang    if [ -n "${parameter}" ]; then
25*f585d8a3SJacky Wang	parameter="${parameter} value();"
26*f585d8a3SJacky Wang    fi
27*f585d8a3SJacky Wang
28*f585d8a3SJacky Wang    for i in ${IMPORT[$a]}; do
29*f585d8a3SJacky Wang	import="${import}import ${i};"
30*f585d8a3SJacky Wang    done
31*f585d8a3SJacky Wang
32*f585d8a3SJacky Wang    mkdir -p ${dir}
33*f585d8a3SJacky Wang    sed -e"s/__PACKAGE__/${package}/" \
34*f585d8a3SJacky Wang	-e"s/__CLASS__/${class}/" \
35*f585d8a3SJacky Wang	-e"s/__INNER__/${inner}/" \
36*f585d8a3SJacky Wang	-e"s/__PARAMETER__/${parameter}/" \
37*f585d8a3SJacky Wang	-e"s/__IMPORT__/${import}/" \
38*f585d8a3SJacky Wang	$(dirname $0)/tmpl.java > ${dir}/${file}
39*f585d8a3SJacky Wang    google-java-format -i ${dir}/${file}
40*f585d8a3SJacky Wangdone
41*f585d8a3SJacky Wang
42*f585d8a3SJacky Wangf=$(dirname $0)/src/net/ltgt/gradle/incap/IncrementalAnnotationProcessorType.java
43*f585d8a3SJacky Wangcat > ${f} <<EOF
44*f585d8a3SJacky Wang/*
45*f585d8a3SJacky Wang * Copyright (C) 2019 The Android Open Source Project
46*f585d8a3SJacky Wang *
47*f585d8a3SJacky Wang * Licensed under the Apache License, Version 2.0 (the "License");
48*f585d8a3SJacky Wang * you may not use this file except in compliance with the License.
49*f585d8a3SJacky Wang * You may obtain a copy of the License at
50*f585d8a3SJacky Wang *
51*f585d8a3SJacky Wang * http://www.apache.org/licenses/LICENSE-2.0
52*f585d8a3SJacky Wang *
53*f585d8a3SJacky Wang * Unless required by applicable law or agreed to in writing, software
54*f585d8a3SJacky Wang * distributed under the License is distributed on an "AS IS" BASIS,
55*f585d8a3SJacky Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
56*f585d8a3SJacky Wang * See the License for the specific language governing permissions and
57*f585d8a3SJacky Wang * limitations under the License.
58*f585d8a3SJacky Wang */
59*f585d8a3SJacky Wang
60*f585d8a3SJacky Wangpackage net.ltgt.gradle.incap;
61*f585d8a3SJacky Wangimport java.util.Locale;
62*f585d8a3SJacky Wangpublic enum IncrementalAnnotationProcessorType {
63*f585d8a3SJacky Wang  AGGREGATING,
64*f585d8a3SJacky Wang  DYNAMIC,
65*f585d8a3SJacky Wang  ISOLATING;
66*f585d8a3SJacky Wang
67*f585d8a3SJacky Wang  public String getProcessorOption() {
68*f585d8a3SJacky Wang    return "org.gradle.annotation.processing." + name().toLowerCase(Locale.ROOT);
69*f585d8a3SJacky Wang  }
70*f585d8a3SJacky Wang}
71*f585d8a3SJacky WangEOF
72