Add utility methods for automatically including api/impl feature modules
This commit is contained in:
parent
bb1497ebb8
commit
a6cdaf24dc
|
@ -203,7 +203,7 @@ knit {
|
|||
dependencies {
|
||||
allLibrariesImpl()
|
||||
allServicesImpl()
|
||||
allFeaturesImpl()
|
||||
allFeaturesImpl(rootDir)
|
||||
implementation(projects.tests.uitests)
|
||||
implementation(projects.anvilannotations)
|
||||
implementation(projects.appnav)
|
||||
|
|
|
@ -38,7 +38,7 @@ dependencies {
|
|||
implementation(libs.dagger)
|
||||
kapt(libs.dagger.compiler)
|
||||
|
||||
allFeaturesApi()
|
||||
allFeaturesApi(rootDir)
|
||||
|
||||
implementation(projects.libraries.core)
|
||||
implementation(projects.libraries.architecture)
|
||||
|
|
|
@ -22,6 +22,7 @@ import gradle.kotlin.dsl.accessors._71f190358cebd46a469f2989484fd643.implementat
|
|||
import org.gradle.accessors.dm.LibrariesForLibs
|
||||
import org.gradle.kotlin.dsl.DependencyHandlerScope
|
||||
import org.gradle.kotlin.dsl.project
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Dependencies used by all the modules
|
||||
|
@ -51,6 +52,21 @@ fun DependencyHandlerScope.composeDependencies(libs: LibrariesForLibs) {
|
|||
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5")
|
||||
}
|
||||
|
||||
private fun DependencyHandlerScope.addImplementationProjects(directory: File, path: String, nameFilter: String) {
|
||||
directory.listFiles().orEmpty().forEach { file ->
|
||||
if (file.isDirectory) {
|
||||
val newPath = "$path:${file.name}"
|
||||
val buildFile = File(file, "build.gradle.kts")
|
||||
if (buildFile.exists() && file.name == nameFilter) {
|
||||
implementation(project(newPath))
|
||||
println("Added implementation(project($newPath))")
|
||||
} else {
|
||||
addImplementationProjects(file, newPath, nameFilter)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.allLibrariesImpl() {
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(project(":libraries:matrix:impl"))
|
||||
|
@ -70,26 +86,11 @@ fun DependencyHandlerScope.allServicesImpl() {
|
|||
implementation(project(":services:toolbox:impl"))
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.allFeaturesApi() {
|
||||
implementation(project(":features:onboarding:api"))
|
||||
implementation(project(":features:login:api"))
|
||||
implementation(project(":features:logout:api"))
|
||||
implementation(project(":features:roomlist:api"))
|
||||
implementation(project(":features:messages:api"))
|
||||
implementation(project(":features:rageshake:api"))
|
||||
implementation(project(":features:preferences:api"))
|
||||
implementation(project(":features:createroom:api"))
|
||||
implementation(project(":features:verifysession:api"))
|
||||
fun DependencyHandlerScope.allFeaturesApi(rootDir: File) {
|
||||
val featuresDir = File(rootDir, "features")
|
||||
addImplementationProjects(featuresDir, ":features", "api")
|
||||
}
|
||||
|
||||
fun DependencyHandlerScope.allFeaturesImpl() {
|
||||
implementation(project(":features:onboarding:impl"))
|
||||
implementation(project(":features:login:impl"))
|
||||
implementation(project(":features:logout:impl"))
|
||||
implementation(project(":features:roomlist:impl"))
|
||||
implementation(project(":features:messages:impl"))
|
||||
implementation(project(":features:rageshake:impl"))
|
||||
implementation(project(":features:preferences:impl"))
|
||||
implementation(project(":features:createroom:impl"))
|
||||
implementation(project(":features:verifysession:impl"))
|
||||
fun DependencyHandlerScope.allFeaturesImpl(rootDir: File) {
|
||||
val featuresDir = File(rootDir, "features")
|
||||
addImplementationProjects(featuresDir, ":features", "impl")
|
||||
}
|
||||
|
|
|
@ -73,22 +73,21 @@ include(":services:appnavstate:impl")
|
|||
include(":services:toolbox:api")
|
||||
include(":services:toolbox:impl")
|
||||
|
||||
include(":features:onboarding:api")
|
||||
include(":features:onboarding:impl")
|
||||
include(":features:logout:api")
|
||||
include(":features:logout:impl")
|
||||
include(":features:roomlist:api")
|
||||
include(":features:roomlist:impl")
|
||||
include(":features:rageshake:api")
|
||||
include(":features:rageshake:impl")
|
||||
include(":features:rageshake:test")
|
||||
include(":features:preferences:api")
|
||||
include(":features:preferences:impl")
|
||||
include(":features:messages:api")
|
||||
include(":features:messages:impl")
|
||||
include(":features:login:api")
|
||||
include(":features:login:impl")
|
||||
include(":features:createroom:api")
|
||||
include(":features:createroom:impl")
|
||||
include(":features:verifysession:api")
|
||||
include(":features:verifysession:impl")
|
||||
|
||||
fun includeProjects(directory: File, path: String) {
|
||||
directory.listFiles().orEmpty().forEach { file ->
|
||||
if (file.isDirectory) {
|
||||
val newPath = "$path:${file.name}"
|
||||
val buildFile = File(file, "build.gradle.kts")
|
||||
if (buildFile.exists()) {
|
||||
include(newPath)
|
||||
println("Included project: $newPath")
|
||||
} else {
|
||||
includeProjects(file, newPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val featuresDir = File(rootDir, "features")
|
||||
includeProjects(featuresDir, ":features")
|
||||
|
|
|
@ -40,5 +40,5 @@ dependencies {
|
|||
ksp(libs.showkase.processor)
|
||||
|
||||
allLibrariesImpl()
|
||||
allFeaturesImpl()
|
||||
allFeaturesImpl(rootDir)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue