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