1 /* 2 * Copyright 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.build.resources 18 19 import androidx.build.checkapi.ApiLocation 20 import java.io.File 21 import org.gradle.api.DefaultTask 22 import org.gradle.api.provider.ListProperty 23 import org.gradle.api.provider.Property 24 import org.gradle.api.tasks.CacheableTask 25 import org.gradle.api.tasks.InputFile 26 import org.gradle.api.tasks.InputFiles 27 import org.gradle.api.tasks.Internal 28 import org.gradle.api.tasks.PathSensitive 29 import org.gradle.api.tasks.PathSensitivity 30 import org.gradle.api.tasks.TaskAction 31 32 /** Task for detecting changes in the public Android resource surface, e.g. `public.xml`. */ 33 @CacheableTask 34 abstract class CheckResourceApiTask : DefaultTask() { 35 /** Checked in resource API files (in source control). */ 36 @get:InputFiles 37 @get:PathSensitive(PathSensitivity.RELATIVE) 38 abstract val checkedInApiFiles: ListProperty<File> 39 40 /** Generated resource API file (in build output). */ 41 @get:Internal abstract val apiLocation: Property<ApiLocation> 42 43 @InputFile 44 @PathSensitive(PathSensitivity.RELATIVE) getTaskInputnull45 fun getTaskInput(): File { 46 return apiLocation.get().resourceFile 47 } 48 49 @TaskAction checkResourceApinull50 fun checkResourceApi() { 51 val builtApi = apiLocation.get().resourceFile 52 53 for (checkedInApi in checkedInApiFiles.get()) { 54 androidx.build.metalava.checkEqual(checkedInApi, builtApi) 55 } 56 } 57 } 58