Skip to content

Commit fc3f249

Browse files
Merge pull request #528 from SpineEventEngine/update-gitignore-via-script
Update `.gitignore` via `buildSrc-migration.kts`
2 parents 44789e2 + 182cbc5 commit fc3f249

File tree

2 files changed

+55
-8
lines changed

2 files changed

+55
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858

5959
# Gradle build files
6060
**/build/**
61+
!**/src/**/build/**
6162

6263
# Do not ignore `build` dependency objects under `buildSrc`.
6364
!**/buildSrc/src/main/kotlin/io/spine/dependency/build/**

scripts/buildSrc-migration.kts

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ private val packages = buildMap {
164164
/**
165165
* Directories to be excluded from the traversal.
166166
*/
167-
private val excludedDirs = setOf(
167+
private val excludedTopLevelDirs = setOf(
168168
".git",
169169
".github",
170170
".github-workflows",
@@ -177,13 +177,24 @@ private val excludedDirs = setOf(
177177
"config"
178178
)
179179

180+
private val excludedPaths = setOf(
181+
"buildSrc/.gradle",
182+
"buildSrc/build",
183+
"scripts/publish-documentation/buildSrc",
184+
)
185+
180186
/**
181-
* Excludes top-level project directory names from the traversal.
187+
* Excludes from the traversal directories that should not be processed.
188+
*
189+
* 1. Top-level project directory with the names listed in [excludedTopLevelDirs].
190+
* 2. `scripts/publish-documentation/buildSrc` directory, which is a symlink.
182191
*/
183192
private val File.isExcluded: Boolean
184-
get() = if (parent == ".")
185-
name in excludedDirs
186-
else false
193+
get() = if (parent == ".") {
194+
name in excludedTopLevelDirs
195+
} else {
196+
excludedPaths.any { path.contains(it) }
197+
}
187198

188199
/**
189200
* Extensions of files to be processed.
@@ -203,8 +214,8 @@ fun applyDependencyReplacements() {
203214
}
204215
.filter { it.isFile && it.extension in extensions }
205216
.forEach {
206-
val outcome = it.applyDependencyReplacements(allReplacements)
207-
if (outcome) {
217+
val fileUpdated = it.applyDependencyReplacements(allReplacements)
218+
if (fileUpdated) {
208219
println(" ${it.name} -> Modified.")
209220
}
210221
}
@@ -233,4 +244,39 @@ private fun File.applyDependencyReplacements(map: Map<String, String>): Boolean
233244
return anythingReplaced
234245
}
235246

236-
applyDependencyReplacements()
247+
private fun fixNotIgnoringBuildDirs() {
248+
val gitIgnore = File(".gitignore")
249+
val text = gitIgnore.readText()
250+
val nl = System.lineSeparator()
251+
252+
val buildDirectories = "!**/src/**/build/"
253+
val includeBuildDirs = "$buildDirectories$nl"
254+
val includeBuildDirFiles = "$buildDirectories**$nl"
255+
256+
if (text.contains(includeBuildDirFiles)) {
257+
// Already processed.
258+
return
259+
}
260+
261+
val updatedText = if (text.contains(includeBuildDirs)) {
262+
text.replace(
263+
includeBuildDirs,
264+
"$buildDirectories**$nl"
265+
)
266+
} else {
267+
val ignoreFilesUnderBuild = "**/build/**$nl"
268+
text.replace(
269+
ignoreFilesUnderBuild,
270+
"$ignoreFilesUnderBuild$includeBuildDirFiles"
271+
)
272+
}
273+
274+
gitIgnore.writeText(updatedText)
275+
}
276+
277+
fun main() {
278+
applyDependencyReplacements()
279+
fixNotIgnoringBuildDirs()
280+
}
281+
282+
main()

0 commit comments

Comments
 (0)