Бывают ситуации когда нужно написать какой-нибудь прикладной скрипт для вашего проекта, например вычислить количество модулей где используются импорты Retrofit'а. Для таких штук удобнее всего написать Gradle таску на Kotlin DSL и сделать это в самом главном build.gradle.kts файле (полный код):
tasks.register("modules_with_retrofit") {
val imports = listOf("retrofit2")
/*
возвращает true если в указанной папке есть .java или .kt файлы с Retrofit импортами
*/
fun Project.isRetrofit(
sourcesFolderPath: String
): Boolean { ... }
val modules = rootProject.allprojects
val count = modules.fold(0) { result, module ->
val java = module.isRetrofit(
"src/main/java/"
)
val kotlin = module.isRetrofit(
"src/main/kotlin/"
)
if (java || kotlin) result + 1
else result
}
println("RESULT => $count")
}Для запуска таски достаточно написать в терминале:
./gradlew modules_with_retrofit
Раньше вместо Gradle Kotlin DSL я использовал Python, что было не очень эффективно по двум причинам:
1) Python ничего не знает о Gradle модулях, из-за этого много шаблонного и ненужного кода.
2) Python не мой основной язык, поэтому много чего приходилось гуглить.
P.S. Рекомендую канал одного крутого чувака - Everlasting Loops, канал о всяких интересных штуках из мобильной разработки, вы вряд ли о них прочитаете в доке.
Пишите в комментах ваше мнение и всем хорошего кода!