xref: /aosp_15_r20/external/exoplayer/annotation-stubs/gen_annotations.sh (revision 30877f796caf59d855b10b687a5d6b3918d765cb)
1#!/bin/bash
2
3# Creates stubs for the checker framework annotations.
4
5ANNOTATIONS=(
6    kotlin.annotations.jvm.UnderMigration
7    org.checkerframework.checker.initialization.qual.UnknownInitialization
8    org.checkerframework.checker.nullness.compatqual.NullableType
9    org.checkerframework.checker.nullness.qual.EnsuresNonNull
10    org.checkerframework.checker.nullness.qual.EnsuresNonNullIf
11    org.checkerframework.checker.nullness.qual.MonotonicNonNull
12    org.checkerframework.checker.nullness.qual.NonNull
13    org.checkerframework.checker.nullness.qual.Nullable
14    org.checkerframework.checker.nullness.qual.PolyNull
15    org.checkerframework.checker.nullness.qual.RequiresNonNull
16    org.checkerframework.dataflow.qual.Pure
17)
18
19ENUMS=(
20    kotlin.annotations.jvm.MigrationStatus
21)
22
23rm -r $(dirname $0)/src/*
24
25autogenerated_notice="NOTE: This is an autogenerated file. Do not modify its \
26contents. See annotation_template.java and gen_annotations.sh under \
27platform\/external\/exoplayer\/annotation-stubs."
28
29for a in ${ANNOTATIONS[@]}; do
30    package=${a%.*}
31    class=${a##*.}
32    dir=$(dirname $0)/src/${package//.//}
33    value_type="String[]"
34    file=${class}.java
35    mkdir -p ${dir}
36    sed -e"s/__PACKAGE__/${package}/"\
37        -e"s/__AUTOGENERATED_NOTICE__/${autogenerated_notice}/"\
38        -e"s/__CLASS__/${class}/"\
39        -e"s/__VALUE_TYPE__/${value_type}/"\
40        annotation_template.java > ${dir}/${file}
41    google-java-format -i ${dir}/${file}
42done
43
44for a in ${ENUMS[@]}; do
45    package=${a%.*}
46    class=${a##*.}
47    dir=$(dirname $0)/src/${package//.//}
48    file=${class}.java
49    mkdir -p ${dir}
50    sed -e"s/__PACKAGE__/${package}/" -e"s/__CLASS__/${class}/" enum_template.java > ${dir}/${file}
51done
52