Skip to content

Commit 99c78ef

Browse files
authored
Merge pull request #547 from dropbox/MF-5759
MF-5759 fix stability of stone task output across different machines
2 parents 80ef16a + 9794891 commit 99c78ef

File tree

1 file changed

+12
-1
lines changed
  • stone-java-gradle-plugin/src/main/kotlin/com/dropbox/stone/java

1 file changed

+12
-1
lines changed

stone-java-gradle-plugin/src/main/kotlin/com/dropbox/stone/java/StoneTask.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,17 @@ import java.io.File
1212
import java.io.FileOutputStream
1313
import javax.inject.Inject
1414
import org.gradle.api.file.ConfigurableFileCollection
15+
import org.gradle.api.file.ProjectLayout
1516

1617
@CacheableTask
1718
abstract class StoneTask : DefaultTask() {
1819

1920
@get:Inject
2021
abstract val exec: ExecOperations
2122

23+
@get:Inject
24+
abstract val layout: ProjectLayout
25+
2226
@get:Input
2327
abstract val stoneConfigs: ListProperty<StoneConfig>
2428

@@ -90,6 +94,13 @@ abstract class StoneTask : DefaultTask() {
9094
}
9195
}
9296

97+
// Order of inputs can affect the output of stone
98+
// Sorting spec files by relative path makes order stable across machines
99+
val projectDirectory = layout.projectDirectory.asFile
100+
val sortedSpecFiles = specFiles.sortedBy {
101+
it.toRelativeString(projectDirectory)
102+
}.map { it.absolutePath }.toTypedArray()
103+
93104
stoneConfigs.get().forEachIndexed { index, stoneConfig ->
94105
val isFirst = index == 0
95106
val append: Boolean = !isFirst
@@ -100,7 +111,7 @@ abstract class StoneTask : DefaultTask() {
100111

101112
generatorFile.get().asFile,
102113
outputDirectory.absolutePath,
103-
*specFiles.map { it.absolutePath }.toTypedArray(),
114+
*sortedSpecFiles,
104115
"--", "--package", stoneConfig.packageName,
105116
)
106117

0 commit comments

Comments
 (0)