feat(build): add module dependency graph generation (#4042)

This commit is contained in:
James Rich 2025-12-18 17:30:36 -06:00 committed by GitHub
parent 85435d7cb8
commit 42bc85b6fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 2204 additions and 127 deletions

179
app/README.md Normal file
View file

@ -0,0 +1,179 @@
# `${projectPath.get()}`
## Module dependency graph
<!--region graph-->
```mermaid
---
config:
layout: elk
elk:
nodePlacementStrategy: SIMPLE
---
graph TB
subgraph :feature
direction TB
:feature:firmware[firmware]:::android-library
:feature:intro[intro]:::android-library
:feature:map[map]:::android-library
:feature:messaging[messaging]:::android-library
:feature:node[node]:::android-library
:feature:settings[settings]:::android-library
end
subgraph :core
direction TB
:core:analytics[analytics]:::android-library
:core:common[common]:::kmp-library
:core:data[data]:::android-library
:core:database[database]:::android-library
:core:datastore[datastore]:::android-library
:core:di[di]:::android-library
:core:model[model]:::android-library
:core:navigation[navigation]:::android-library
:core:network[network]:::android-library
:core:prefs[prefs]:::android-library
:core:proto[proto]:::android-library
:core:service[service]:::android-library
:core:strings[strings]:::kmp-library
:core:ui[ui]:::android-library
end
:app[app]:::android-application
:app -.-> :core:analytics
:app -.-> :core:common
:app -.-> :core:data
:app -.-> :core:database
:app -.-> :core:datastore
:app -.-> :core:di
:app -.-> :core:model
:app -.-> :core:navigation
:app -.-> :core:network
:app -.-> :core:prefs
:app -.-> :core:proto
:app -.-> :core:service
:app -.-> :core:strings
:app -.-> :core:ui
:app -.-> :feature:firmware
:app -.-> :feature:intro
:app -.-> :feature:map
:app -.-> :feature:messaging
:app -.-> :feature:node
:app -.-> :feature:settings
:core:analytics -.-> :core:prefs
:core:data -.-> :core:analytics
:core:data -.-> :core:database
:core:data -.-> :core:datastore
:core:data -.-> :core:di
:core:data -.-> :core:model
:core:data -.-> :core:network
:core:data -.-> :core:prefs
:core:data -.-> :core:proto
:core:database -.-> :core:model
:core:database -.-> :core:proto
:core:database -.-> :core:strings
:core:datastore -.-> :core:proto
:core:model -.-> :core:common
:core:model -.-> :core:proto
:core:model -.-> :core:strings
:core:network -.-> :core:model
:core:service -.-> :core:database
:core:service -.-> :core:model
:core:service -.-> :core:proto
:core:ui -.-> :core:data
:core:ui -.-> :core:database
:core:ui -.-> :core:model
:core:ui -.-> :core:prefs
:core:ui -.-> :core:proto
:core:ui -.-> :core:service
:core:ui -.-> :core:strings
:feature:firmware -.-> :core:common
:feature:firmware -.-> :core:data
:feature:firmware -.-> :core:database
:feature:firmware -.-> :core:datastore
:feature:firmware -.-> :core:model
:feature:firmware -.-> :core:navigation
:feature:firmware -.-> :core:prefs
:feature:firmware -.-> :core:proto
:feature:firmware -.-> :core:service
:feature:firmware -.-> :core:strings
:feature:firmware -.-> :core:ui
:feature:intro -.-> :core:strings
:feature:map -.-> :core:common
:feature:map -.-> :core:data
:feature:map -.-> :core:database
:feature:map -.-> :core:datastore
:feature:map -.-> :core:model
:feature:map -.-> :core:navigation
:feature:map -.-> :core:prefs
:feature:map -.-> :core:proto
:feature:map -.-> :core:service
:feature:map -.-> :core:strings
:feature:map -.-> :core:ui
:feature:messaging -.-> :core:data
:feature:messaging -.-> :core:database
:feature:messaging -.-> :core:model
:feature:messaging -.-> :core:prefs
:feature:messaging -.-> :core:proto
:feature:messaging -.-> :core:service
:feature:messaging -.-> :core:strings
:feature:messaging -.-> :core:ui
:feature:node -.-> :core:data
:feature:node -.-> :core:database
:feature:node -.-> :core:datastore
:feature:node -.-> :core:di
:feature:node -.-> :core:model
:feature:node -.-> :core:navigation
:feature:node -.-> :core:proto
:feature:node -.-> :core:service
:feature:node -.-> :core:strings
:feature:node -.-> :core:ui
:feature:node -.-> :feature:map
:feature:settings -.-> :core:common
:feature:settings -.-> :core:data
:feature:settings -.-> :core:database
:feature:settings -.-> :core:datastore
:feature:settings -.-> :core:model
:feature:settings -.-> :core:navigation
:feature:settings -.-> :core:prefs
:feature:settings -.-> :core:proto
:feature:settings -.-> :core:service
:feature:settings -.-> :core:strings
:feature:settings -.-> :core:ui
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;
```
<details><summary>📋 Graph legend</summary>
```mermaid
graph TB
application[application]:::android-application
feature[feature]:::android-feature
library[library]:::android-library
jvm[jvm]:::jvm-library
kmp-library[kmp-library]:::kmp-library
application -.-> feature
library --> jvm
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;
```
</details>
<!--endregion-->

View file

@ -15,9 +15,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import com.geeksville.mesh.buildlogic.GitVersionValueSource
import com.android.build.api.dsl.ApplicationExtension
import com.mikepenz.aboutlibraries.plugin.DuplicateMode
import com.mikepenz.aboutlibraries.plugin.DuplicateRule
import org.meshtastic.buildlogic.GitVersionValueSource
import org.meshtastic.buildlogic.configProperties
import java.io.FileInputStream
import java.util.Properties
@ -43,16 +45,8 @@ if (keystorePropertiesFile.exists()) {
FileInputStream(keystorePropertiesFile).use { keystoreProperties.load(it) }
}
val configPropertiesFile = rootProject.file("config.properties")
val configProperties = Properties()
if (configPropertiesFile.exists()) {
FileInputStream(configPropertiesFile).use { configProperties.load(it) }
}
android {
configure<ApplicationExtension> {
namespace = configProperties.getProperty("APPLICATION_ID")
compileSdk = configProperties.getProperty("COMPILE_SDK").toInt()
signingConfigs {
create("release") {
@ -64,8 +58,6 @@ android {
}
defaultConfig {
applicationId = configProperties.getProperty("APPLICATION_ID")
minSdk = configProperties.getProperty("MIN_SDK").toInt()
targetSdk = configProperties.getProperty("TARGET_SDK").toInt()
val vcOffset = configProperties.getProperty("VERSION_CODE_OFFSET")?.toInt() ?: 0
println("Version code offset: $vcOffset")
@ -167,7 +159,6 @@ secrets {
propertiesFileName = "secrets.properties"
}
// workaround for https://github.com/google/ksp/issues/1590
androidComponents {
onVariants(selector().all()) { variant ->
if (variant.name == "fdroidDebug") {