1 package dagger.hilt.android.plugin.util 2 3 import org.gradle.api.artifacts.transform.CacheableTransform 4 import org.gradle.api.artifacts.transform.InputArtifact 5 import org.gradle.api.artifacts.transform.TransformAction 6 import org.gradle.api.artifacts.transform.TransformOutputs 7 import org.gradle.api.artifacts.transform.TransformParameters 8 import org.gradle.api.file.FileSystemLocation 9 import org.gradle.api.provider.Provider 10 import org.gradle.api.tasks.Classpath 11 12 /** 13 * A transform that registers the input file (usually a jar or a class) as an output and thus 14 * changing from one artifact type to another. 15 */ 16 @CacheableTransform 17 abstract class CopyTransform : TransformAction<TransformParameters.None> { 18 @get:Classpath 19 @get:InputArtifact 20 abstract val inputArtifactProvider: Provider<FileSystemLocation> 21 transformnull22 override fun transform(outputs: TransformOutputs) { 23 val input = inputArtifactProvider.get().asFile 24 when { 25 input.isDirectory -> outputs.dir(input) 26 input.isFile -> outputs.file(input) 27 else -> error("File/directory does not exist: ${input.absolutePath}") 28 } 29 } 30 } 31