Skip to content

Commit f87d8fa

Browse files
committed
Fix usage of Project during task execution
1 parent b76a84e commit f87d8fa

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

gradle-plugin/src/main/kotlin/dev/shreyaspatil/composeCompilerMetricsGenerator/plugin/ComposeCompilerReportExtension.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ interface ComposeCompilerReportExtension {
4747
val name: Property<String>
4848

4949
/**
50-
* The directory path where report will be stored.
50+
* The directory where report will be stored.
5151
*/
52-
val outputPath: Property<String>
52+
val outputDirectory: Property<File>
5353

5454
val composeRawMetricsOutputDirectory: File
55-
get() = File(outputPath.get()).resolve("raw")
55+
get() = outputDirectory.get().resolve("raw")
5656

5757
companion object {
5858
const val NAME = "htmlComposeCompilerReport"
@@ -64,7 +64,7 @@ interface ComposeCompilerReportExtension {
6464
enableReport.convention(true)
6565
enableMetrics.convention(true)
6666
name.convention("${target.rootProject.name}:${target.name}")
67-
outputPath.convention(target.buildDir.resolve("compose_report").absolutePath)
67+
outputDirectory.convention(target.buildDir.resolve("compose_report"))
6868
}
6969

7070
/**

gradle-plugin/src/main/kotlin/dev/shreyaspatil/composeCompilerMetricsGenerator/plugin/task/ComposeCompilerReportGenerateTask.kt

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ import dev.shreyaspatil.composeCompilerMetricsGenerator.generator.ReportSpec
3131
import dev.shreyaspatil.composeCompilerMetricsGenerator.plugin.ComposeCompilerReportExtension
3232
import org.gradle.api.DefaultTask
3333
import org.gradle.api.Project
34+
import org.gradle.api.file.Directory
35+
import org.gradle.api.file.DirectoryProperty
3436
import org.gradle.api.provider.Property
3537
import org.gradle.api.tasks.Input
38+
import org.gradle.api.tasks.InputDirectory
39+
import org.gradle.api.tasks.OutputDirectory
3640
import org.gradle.api.tasks.TaskAction
3741
import org.gradle.api.tasks.TaskProvider
3842
import 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

121128
fun 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

Comments
 (0)