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