@@ -31,8 +31,12 @@ import dev.shreyaspatil.composeCompilerMetricsGenerator.generator.ReportSpec
3131import dev.shreyaspatil.composeCompilerMetricsGenerator.plugin.ComposeCompilerReportExtension
3232import org.gradle.api.DefaultTask
3333import org.gradle.api.Project
34+ import org.gradle.api.file.Directory
35+ import org.gradle.api.file.DirectoryProperty
3436import org.gradle.api.provider.Property
3537import org.gradle.api.tasks.Input
38+ import org.gradle.api.tasks.InputDirectory
39+ import org.gradle.api.tasks.OutputDirectory
3640import org.gradle.api.tasks.TaskAction
3741import org.gradle.api.tasks.TaskProvider
3842import org.gradle.tooling.GradleConnector
@@ -45,17 +49,23 @@ abstract class ComposeCompilerReportGenerateTask : DefaultTask() {
4549 @get:Input
4650 abstract val compileKotlinTasks: Property <String >
4751
48- private val reportExtension: ComposeCompilerReportExtension
49- get() = ComposeCompilerReportExtension .get(project)
52+ @get:Input
53+ abstract val reportName: Property <String >
54+
55+ @get:InputDirectory
56+ abstract val composeRawMetricsOutputDirectory: DirectoryProperty
57+
58+ @get:OutputDirectory
59+ abstract val outputDirectory: DirectoryProperty
5060
5161 @TaskAction
5262 fun generate () {
53- val reportExt = reportExtension
54- cleanupDirectory(reportExtension.outputPath.get() )
63+ val outputDirectory = outputDirectory.get().asFile
64+ cleanupDirectory(outputDirectory )
5565
5666 generateRawMetricsAndReport()
5767
58- generateReport(reportExt )
68+ generateReport(outputDirectory )
5969 }
6070
6171 private fun generateRawMetricsAndReport () {
@@ -79,14 +89,12 @@ abstract class ComposeCompilerReportGenerateTask : DefaultTask() {
7989 }
8090 }
8191
82- private fun generateReport (reportExtension : ComposeCompilerReportExtension ) {
83- val outputDirectory = reportExtension.outputPath.get().let { File (it) }
84-
92+ private fun generateReport (outputDirectory : File ) {
8593 // Create a report specification with application name
86- val reportSpec = ReportSpec (reportExtension.name .get())
94+ val reportSpec = ReportSpec (reportName .get())
8795
8896 val rawReportProvider = ComposeCompilerRawReportProvider .FromDirectory (
89- directory = reportExtension. composeRawMetricsOutputDirectory,
97+ directory = composeRawMetricsOutputDirectory.get().asFile ,
9098 )
9199
92100 // Provide metric files to generator
@@ -106,24 +114,27 @@ abstract class ComposeCompilerReportGenerateTask : DefaultTask() {
106114 logger.quiet(" Compose Compiler report is generated: $reportUrl " )
107115 }
108116
109- private fun cleanupDirectory (directory : String ) {
110- val dirFile = File (directory)
111- if (dirFile.exists()) {
112- if (! dirFile.isDirectory) {
113- throw FileNotFoundException (" '$directory ' is not a directory" )
117+ private fun cleanupDirectory (outputDirectory : File ) {
118+ if (outputDirectory.exists()) {
119+ if (! outputDirectory.isDirectory) {
120+ throw FileNotFoundException (" '$outputDirectory ' is not a directory" )
114121 }
115122 }
116123
117- dirFile .deleteRecursively()
124+ outputDirectory .deleteRecursively()
118125 }
119126}
120127
121128fun Project.registerComposeCompilerReportGenTaskForVariant (variant : Variant ): TaskProvider <ComposeCompilerReportGenerateTask > {
122129 val taskName = variant.name + " ComposeCompilerHtmlReport"
123130 val compileKotlinTaskName = compileKotlinTaskNameFromVariant(variant)
131+ val reportExtension = ComposeCompilerReportExtension .get(project)
124132
125133 return tasks.register(taskName, ComposeCompilerReportGenerateTask ::class .java) {
126134 compileKotlinTasks.set(compileKotlinTaskName)
135+ reportName.set(reportExtension.name)
136+ composeRawMetricsOutputDirectory.set(reportExtension.composeRawMetricsOutputDirectory)
137+ outputDirectory.set(layout.dir(reportExtension.outputDirectory))
127138
128139 group = " compose compiler report"
129140 description = " Generate Compose Compiler Metrics and Report"
0 commit comments