@@ -164,7 +164,7 @@ private val packages = buildMap {
164
164
/* *
165
165
* Directories to be excluded from the traversal.
166
166
*/
167
- private val excludedDirs = setOf (
167
+ private val excludedTopLevelDirs = setOf (
168
168
" .git" ,
169
169
" .github" ,
170
170
" .github-workflows" ,
@@ -177,13 +177,24 @@ private val excludedDirs = setOf(
177
177
" config"
178
178
)
179
179
180
+ private val excludedPaths = setOf (
181
+ " buildSrc/.gradle" ,
182
+ " buildSrc/build" ,
183
+ " scripts/publish-documentation/buildSrc" ,
184
+ )
185
+
180
186
/* *
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.
182
191
*/
183
192
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
+ }
187
198
188
199
/* *
189
200
* Extensions of files to be processed.
@@ -203,8 +214,8 @@ fun applyDependencyReplacements() {
203
214
}
204
215
.filter { it.isFile && it.extension in extensions }
205
216
.forEach {
206
- val outcome = it.applyDependencyReplacements(allReplacements)
207
- if (outcome ) {
217
+ val fileUpdated = it.applyDependencyReplacements(allReplacements)
218
+ if (fileUpdated ) {
208
219
println (" ${it.name} -> Modified." )
209
220
}
210
221
}
@@ -233,4 +244,39 @@ private fun File.applyDependencyReplacements(map: Map<String, String>): Boolean
233
244
return anythingReplaced
234
245
}
235
246
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