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 // A transform that registers the input jar file as an output and thus changing from one artifact 13 // type to another. 14 // TODO: Improve to only copy classes that need to be visible by Hilt & Dagger. 15 @CacheableTransform 16 abstract class CopyTransform : TransformAction<TransformParameters.None> { 17 @get:Classpath 18 @get:InputArtifact 19 abstract val inputArtifactProvider: Provider<FileSystemLocation> 20 transformnull21 override fun transform(outputs: TransformOutputs) { 22 val input = inputArtifactProvider.get().asFile 23 when { 24 input.isDirectory -> outputs.dir(input) 25 input.isFile -> outputs.file(input) 26 else -> error("File/directory does not exist: ${input.absolutePath}") 27 } 28 } 29 } 30