Skip to content

Commit f3e60bb

Browse files
authored
Merge pull request #44 from skydoves/improve/explicit-projectname
Add an explicit project name to captures the project name during configurations
2 parents d5425ce + f145a59 commit f3e60bb

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

stability-gradle/api/stability-gradle.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public abstract class com/skydoves/compose/stability/gradle/StabilityCheckTask :
2525
public final fun check ()V
2626
public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/ListProperty;
2727
public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/ListProperty;
28+
public abstract fun getProjectName ()Lorg/gradle/api/provider/Property;
2829
public abstract fun getStabilityDir ()Lorg/gradle/api/file/DirectoryProperty;
2930
public abstract fun getStabilityInputFile ()Lorg/gradle/api/file/RegularFileProperty;
3031
}
@@ -35,6 +36,7 @@ public abstract class com/skydoves/compose/stability/gradle/StabilityDumpTask :
3536
public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/ListProperty;
3637
public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/ListProperty;
3738
public abstract fun getOutputDir ()Lorg/gradle/api/file/DirectoryProperty;
39+
public abstract fun getProjectName ()Lorg/gradle/api/provider/Property;
3840
public abstract fun getStabilityInputFile ()Lorg/gradle/api/file/RegularFileProperty;
3941
}
4042

stability-gradle/src/main/kotlin/com/skydoves/compose/stability/gradle/StabilityAnalyzerGradlePlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public class StabilityAnalyzerGradlePlugin : KotlinCompilerPluginSupportPlugin {
6868
"stabilityDump",
6969
StabilityDumpTask::class.java,
7070
) {
71+
projectName.set(target.name)
7172
stabilityInputFile.set(
7273
target.layout.buildDirectory.file("stability/stability-info.json"),
7374
)
@@ -81,6 +82,7 @@ public class StabilityAnalyzerGradlePlugin : KotlinCompilerPluginSupportPlugin {
8182
"stabilityCheck",
8283
StabilityCheckTask::class.java,
8384
) {
85+
projectName.set(target.name)
8486
stabilityInputFile.set(
8587
target.layout.buildDirectory.file("stability/stability-info.json"),
8688
)

stability-gradle/src/main/kotlin/com/skydoves/compose/stability/gradle/StabilityCheckTask.kt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.gradle.api.GradleException
2020
import org.gradle.api.file.DirectoryProperty
2121
import org.gradle.api.file.RegularFileProperty
2222
import org.gradle.api.provider.ListProperty
23+
import org.gradle.api.provider.Property
2324
import org.gradle.api.tasks.Input
2425
import org.gradle.api.tasks.Internal
2526
import org.gradle.api.tasks.TaskAction
@@ -55,6 +56,12 @@ public abstract class StabilityCheckTask : DefaultTask() {
5556
@get:Input
5657
public abstract val ignoredClasses: ListProperty<String>
5758

59+
/**
60+
* Project name (captured at configuration time for configuration cache compatibility).
61+
*/
62+
@get:Input
63+
public abstract val projectName: Property<String>
64+
5865
init {
5966
group = "verification"
6067
description = "Check composable stability against reference file"
@@ -66,7 +73,9 @@ public abstract class StabilityCheckTask : DefaultTask() {
6673
if (inputFile == null || !inputFile.exists()) {
6774
// If the file doesn't exist, it means the module has no composable functions
6875
// This is expected for modules like activities or utilities without composables
69-
logger.lifecycle("ℹ️ No composables found in :${project.name}, skipping stability check")
76+
logger.lifecycle(
77+
"ℹ️ No composables found in :${projectName.get()}, skipping stability check",
78+
)
7079
return
7180
}
7281

@@ -75,19 +84,23 @@ public abstract class StabilityCheckTask : DefaultTask() {
7584
// Directory doesn't exist - no baseline has been created yet
7685
// This is expected for new modules or before the first stabilityDump
7786
logger.lifecycle(
78-
"ℹ️ No stability baseline found for :${project.name}, skipping stability check",
87+
"ℹ️ No stability baseline found for :${projectName.get()}, skipping stability check",
88+
)
89+
logger.lifecycle(
90+
" Run './gradlew :${projectName.get()}:stabilityDump' to create the baseline",
7991
)
80-
logger.lifecycle(" Run './gradlew :${project.name}:stabilityDump' to create the baseline")
8192
return
8293
}
8394

84-
val referenceFile = stabilityDirectory.resolve("${project.name}.stability")
95+
val referenceFile = stabilityDirectory.resolve("${projectName.get()}.stability")
8596
if (!referenceFile.exists()) {
8697
// Directory exists but file doesn't - unusual but handle gracefully
8798
logger.lifecycle(
88-
"ℹ️ No stability baseline found for :${project.name}, skipping stability check",
99+
"ℹ️ No stability baseline found for :${projectName.get()}, skipping stability check",
100+
)
101+
logger.lifecycle(
102+
" Run './gradlew :${projectName.get()}:stabilityDump' to create the baseline",
89103
)
90-
logger.lifecycle(" Run './gradlew :${project.name}:stabilityDump' to create the baseline")
91104
return
92105
}
93106

stability-gradle/src/main/kotlin/com/skydoves/compose/stability/gradle/StabilityDumpTask.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import org.gradle.api.DefaultTask
1919
import org.gradle.api.file.DirectoryProperty
2020
import org.gradle.api.file.RegularFileProperty
2121
import org.gradle.api.provider.ListProperty
22+
import org.gradle.api.provider.Property
2223
import org.gradle.api.tasks.Input
2324
import org.gradle.api.tasks.Internal
2425
import org.gradle.api.tasks.OutputDirectory
@@ -55,6 +56,12 @@ public abstract class StabilityDumpTask : DefaultTask() {
5556
@get:Input
5657
public abstract val ignoredClasses: ListProperty<String>
5758

59+
/**
60+
* Project name (captured at configuration time for configuration cache compatibility).
61+
*/
62+
@get:Input
63+
public abstract val projectName: Property<String>
64+
5865
init {
5966
group = "verification"
6067
description = "Dump composable stability information to stability file"
@@ -66,14 +73,14 @@ public abstract class StabilityDumpTask : DefaultTask() {
6673
if (inputFile == null || !inputFile.exists()) {
6774
// If the file doesn't exist, it means the module has no composable functions
6875
// This is expected for modules like activities or utilities without composables
69-
logger.lifecycle("ℹ️ No composables found in :${project.name}, skipping stability dump")
76+
logger.lifecycle("ℹ️ No composables found in :${projectName.get()}, skipping stability dump")
7077
return
7178
}
7279

7380
val outputDirectory = outputDir.get().asFile
7481
outputDirectory.mkdirs()
7582

76-
val outputFile = outputDirectory.resolve("${project.name}.stability")
83+
val outputFile = outputDirectory.resolve("${projectName.get()}.stability")
7784
val stabilityInfo = parseStabilityInfo(inputFile)
7885
val filtered = filterStabilityInfo(
7986
stabilityInfo,
@@ -277,7 +284,7 @@ public abstract class StabilityDumpTask : DefaultTask() {
277284
writer.write("// https://github.com/skydoves/compose-stability-analyzer\n")
278285
writer.write("//\n")
279286
writer.write("// Do not edit this file directly. To update it, run:\n")
280-
writer.write("// ./gradlew :${project.name}:stabilityDump\n")
287+
writer.write("// ./gradlew :${projectName.get()}:stabilityDump\n")
281288
writer.write("\n")
282289

283290
entries.sortedBy { it.qualifiedName }.forEach { entry ->

0 commit comments

Comments
 (0)