Merge pull request #203 from vector-im/feature/bma/cleanModules

Clean module dependencies
This commit is contained in:
Benoit Marty
2023-03-16 11:18:38 +01:00
committed by GitHub
6 changed files with 50 additions and 15 deletions

View File

@@ -18,7 +18,7 @@
import com.android.build.api.variant.FilterConfiguration.FilterType.ABI
import extension.allFeaturesImpl
import extension.allLibraries
import extension.allLibrariesImpl
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
@@ -200,11 +200,8 @@ knit {
}
dependencies {
allLibraries()
allLibrariesImpl()
allFeaturesImpl()
implementation(projects.libraries.matrix.impl)
implementation(projects.libraries.dateformatter.impl)
implementation(projects.libraries.sessionStorage.impl)
implementation(projects.tests.uitests)
implementation(projects.anvilannotations)
implementation(projects.appnav)

View File

@@ -181,10 +181,46 @@ A few details about some modules:
Most of the time a feature module should not know anything about other feature module.
The navigation glue is currently done in the `app` module.
Here is the current module dependency graph:
Here is the current simplified module dependency graph:
<!-- To update this graph, run `./tools/docs/generateModuleGraph.sh` (one day the CI will do it hopefully). -->
<img src=./images/module_graph.png width=800 />
<!-- Note: a full graph can be generated using `./tools/docs/generateModuleGraph.sh`. -->
<!-- Note: doc can be found at https://mermaid.js.org/syntax/flowchart.html#graph -->
```mermaid
flowchart TD
subgraph Application
app([:app])--implementation-->appnav([:appnav])
end
subgraph Features
featureapi([:features:*:api])
featureimpl([:features:*:impl])
end
subgraph Libraries
subgraph Matrix
matrixapi([:matrix:api])
matriximpl([:matrix:impl])
end
libraryarch([:libraries:architecture])
libraryapi([:libraries:*:api])
libraryimpl([:libraries:*:impl])
end
subgraph Matrix RustSdk
RustSdk([Rust Sdk])
end
app--implementation-->featureimpl
app--implementation-->libraryimpl
appnav--implementation-->featureapi
appnav--implementation-->libraryarch
featureimpl--api-->featureapi
featureimpl--implementation-->matrixapi
featureimpl--implementation-->libraryapi
featureimpl--implementation-->libraryarch
matriximpl--implementation-->matrixapi
matrixapi--api-->RustSdk
matriximpl--api-->RustSdk
featureapi--implementation-->libraryarch
libraryimpl--api-->libraryapi
```
### Application

View File

@@ -34,7 +34,7 @@ dependencies {
// api(projects.libraries.rustsdk)
implementation(libs.matrix.sdk)
implementation(projects.libraries.di)
implementation(projects.libraries.matrix.api)
api(projects.libraries.matrix.api)
implementation(libs.dagger)
implementation(projects.libraries.core)
implementation("net.java.dev.jna:jna:5.13.0@aar")

View File

@@ -32,7 +32,7 @@ dependencies {
implementation(libs.dagger)
implementation(projects.libraries.core)
implementation(projects.libraries.encryptedDb)
implementation(projects.libraries.sessionStorage.api)
api(projects.libraries.sessionStorage.api)
implementation(libs.sqldelight.driver.android)
implementation(libs.sqlcipher)
implementation(libs.sqlite)

View File

@@ -51,14 +51,16 @@ fun DependencyHandlerScope.composeDependencies(libs: LibrariesForLibs) {
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5")
}
fun DependencyHandlerScope.allLibraries() {
fun DependencyHandlerScope.allLibrariesImpl() {
implementation(project(":libraries:designsystem"))
implementation(project(":libraries:matrix:api"))
implementation(project(":libraries:matrix:impl"))
implementation(project(":libraries:matrixui"))
implementation(project(":libraries:core"))
implementation(project(":libraries:architecture"))
implementation(project(":libraries:dateformatter:api"))
implementation(project(":libraries:dateformatter:impl"))
implementation(project(":libraries:di"))
implementation(project(":libraries:session-storage:impl"))
}
fun DependencyHandlerScope.allFeaturesApi() {

View File

@@ -15,7 +15,7 @@
*/
import extension.allFeaturesImpl
import extension.allLibraries
import extension.allLibrariesImpl
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
@@ -39,6 +39,6 @@ dependencies {
implementation(libs.showkase)
ksp(libs.showkase.processor)
allLibraries()
allLibrariesImpl()
allFeaturesImpl()
}