Redo DI gradle setup code

This commit is contained in:
Jorge Martín
2025-08-25 08:56:45 +02:00
parent 60cdf61cf2
commit e06bacbff3
85 changed files with 215 additions and 259 deletions

View File

@@ -13,7 +13,6 @@ import com.android.build.gradle.tasks.GenerateBuildConfig
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution
import config.BuildTimeConfig
import extension.AssetCopyTask
import extension.ComponentMergingStrategy
import extension.GitBranchNameValueSource
import extension.GitRevisionValueSource
import extension.allEnterpriseImpl
@@ -23,7 +22,7 @@ import extension.allServicesImpl
import extension.buildConfigFieldStr
import extension.koverDependencies
import extension.locales
import extension.setupAnvil
import extension.setupDependencyInjection
import extension.setupKover
import java.util.Locale
@@ -248,11 +247,7 @@ knit {
}
}
setupAnvil(
generateDaggerCode = true,
generateDaggerFactoriesUsingAnvil = false,
componentMergingStrategy = ComponentMergingStrategy.KSP,
)
setupDependencyInjection()
dependencies {
allLibrariesImpl()

View File

@@ -8,7 +8,7 @@
@file:Suppress("UnstableApiUsage")
import extension.allFeaturesApi
import extension.setupAnvil
import extension.setupDependencyInjection
plugins {
id("io.element.android-compose-library")
@@ -19,7 +19,7 @@ android {
namespace = "io.element.android.appnav"
}
setupAnvil()
setupDependencyInjection()
dependencies {
allFeaturesApi(project)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.features.analytics.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.features.cachecleaner.api"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.architecture)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.features.cachecleaner.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.cachecleaner.api)

View File

@@ -1,6 +1,6 @@
import extension.buildConfigFieldStr
import extension.readLocalProperty
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -60,7 +60,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2025 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.changeroommemberroles.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.features.enterprise.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.compound)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.ftue.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.invite.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.joinroom.api)

View File

@@ -5,7 +5,7 @@
* Please see LICENSE files in the repository root for full details.
*/
import extension.setupAnvil
import extension.setupDependencyInjection
plugins {
id("io.element.android-compose-library")
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.knockrequests.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.features.leaveroom.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.leaveroom.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -17,7 +17,7 @@ android {
namespace = "io.element.android.features.licenses.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.serialization.json)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.location.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.lockscreen.api)

View File

@@ -1,5 +1,4 @@
import extension.ComponentMergingStrategy
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -24,7 +23,7 @@ android {
}
}
setupAnvil(componentMergingStrategy = ComponentMergingStrategy.KSP)
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.messages.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.features.migration.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.features.migration.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.features.networkmonitor.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.poll.api)

View File

@@ -1,6 +1,6 @@
import config.BuildTimeConfig
import extension.buildConfigFieldStr
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -42,7 +42,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -5,7 +5,7 @@
* Please see LICENSE files in the repository root for full details.
*/
import extension.setupAnvil
import extension.setupDependencyInjection
plugins {
id("io.element.android-compose-library")
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.reportroom.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.roomaliasresolver.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.features.roomcall.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.roomcall.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.roomdirectory.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2025 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.features.signedout.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.features.signedout.api)

View File

@@ -1,5 +1,4 @@
import extension.ComponentMergingStrategy
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -23,7 +22,7 @@ android {
}
}
setupAnvil(componentMergingStrategy = ComponentMergingStrategy.KSP)
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.features.viewfolder.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -18,7 +18,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.di)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.architecture"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.di)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2025 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.libraries.audio.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.audio.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.cryptography.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-compose-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.libraries.dateformatter.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.deeplink.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.deeplink.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.libraries.featureflag.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.featureflag.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.fullscreenintent.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.fullscreenintent.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-compose-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.libraries.indicator.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.libraries.matrix.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
releaseImplementation(libs.matrix.sdk)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.di)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-compose-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.libraries.mediapickers.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-compose-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.libraries.mediapickers.test"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.libraries.mediaplayer.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.mediaplayer.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.libraries.mediaupload.api"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.mediaupload.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.coroutines.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -20,7 +20,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -23,7 +23,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.appconfig)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.accompanist.permission)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.preferences.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.preferences.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -22,7 +22,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -8,7 +8,7 @@
@file:Suppress("UnstableApiUsage")
import config.BuildTimeConfig
import extension.setupAnvil
import extension.setupDependencyInjection
plugins {
id("io.element.android-library")
@@ -45,7 +45,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.pushproviders.unifiedpush"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -19,7 +19,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.libraries.roomselect.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.sessionstorage.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -19,7 +19,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.architecture)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -21,7 +21,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.libraries.usersearch.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.libraries.voiceplayer.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.voiceplayer.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.libraries.voicerecorder.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.voicerecorder.api)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2025 New Vector Ltd.
@@ -17,7 +17,7 @@ android {
namespace = "io.element.android.libraries.wellknown.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
api(projects.libraries.wellknown.api)

View File

@@ -1,86 +0,0 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
package extension
import dev.zacsweers.metro.gradle.MetroPluginExtension
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.kotlin.dsl.the
import org.gradle.plugin.use.PluginDependency
/**
* Setup Anvil plugin with the given configuration.
* @param generateDaggerCode whether to enable general Dagger code generation using Kapt. `false` by default.
* @param generateDaggerFactoriesUsingAnvil whether to generate Dagger factories using Anvil instead of Kapt. `true` by default.
* @param componentMergingStrategy how to perform component merging. This is `ComponentMergingStrategy.NONE` by default, which will prevent component merging
* from running.
*/
fun Project.setupAnvil(
generateDaggerCode: Boolean = false,
generateDaggerFactoriesUsingAnvil: Boolean = true,
componentMergingStrategy: ComponentMergingStrategy = ComponentMergingStrategy.NONE,
) {
val libs = the<LibrariesForLibs>()
// // Add dagger dependency, needed for generated code
// dependencies.implementation(libs.dagger)
// Apply Anvil plugin and configure it
applyPluginIfNeeded(libs.plugins.metro)
applyPluginIfNeeded(libs.plugins.ksp)
// project.pluginManager.withPlugin(libs.plugins.anvil.get().pluginId) {
// // Setup extension
// extensions.configure(AnvilExtension::class.java) {
// this.generateDaggerFactories.set(generateDaggerFactoriesUsingAnvil)
// this.disableComponentMerging.set(componentMergingStrategy == ComponentMergingStrategy.NONE)
//
// useKsp(
// contributesAndFactoryGeneration = true,
// componentMerging = componentMergingStrategy == ComponentMergingStrategy.KSP,
// )
// }
// }
// if (generateDaggerCode) {
// // Needed at the top level since dagger code should be generated at a single point for performance reasons
// dependencies.add("ksp", libs.dagger.compiler)
// }
project.pluginManager.withPlugin(libs.plugins.metro.get().pluginId) {
// Setup extension
extensions.configure(MetroPluginExtension::class.java) {
// debug.set(true)
// generateAssistedFactories.set(true)
// this.generateAssistedFactories.set(generateDaggerFactoriesUsingAnvil)
}
}
// These dependencies are only needed for compose library or application modules
if (project.pluginManager.hasPlugin("io.element.android-compose-library")
|| project.pluginManager.hasPlugin("io.element.android-compose-application")) {
// Annotations to generate DI code for Appyx nodes
dependencies.implementation(project.project(":anvilannotations"))
// Code generator for the annotations above
dependencies.add("ksp", project.project(":anvilcodegen"))
}
}
private fun Project.applyPluginIfNeeded(plugin: Provider<PluginDependency>) {
val pluginId = plugin.get().pluginId
if (!pluginManager.hasPlugin(pluginId)) {
pluginManager.apply(pluginId)
}
}
enum class ComponentMergingStrategy {
NONE,
KAPT,
KSP
}

View File

@@ -0,0 +1,49 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
package extension
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.kotlin.dsl.the
import org.gradle.plugin.use.PluginDependency
/**
* Setup the Metro plugin with the shared configuration.
* @param generateNodeFactories Whether to set up the KSP plugin and dependencies to generate Appyx Node factories.
*/
fun Project.setupDependencyInjection(
generateNodeFactories: Boolean = shouldApplyAppyxCodegen(),
) {
val libs = the<LibrariesForLibs>()
// Apply Metro plugin and configure it
applyPluginIfNeeded(libs.plugins.metro)
if (generateNodeFactories) {
applyPluginIfNeeded(libs.plugins.ksp)
// Annotations to generate DI code for Appyx nodes
dependencies.implementation(project.project(":anvilannotations"))
// Code generator for the annotations above
dependencies.add("ksp", project.project(":anvilcodegen"))
}
}
// These dependencies should only be needed for compose library or application modules
private fun Project.shouldApplyAppyxCodegen(): Boolean {
return project.pluginManager.hasPlugin("io.element.android-compose-library")
|| project.pluginManager.hasPlugin("io.element.android-compose-application")
}
private fun Project.applyPluginIfNeeded(plugin: Provider<PluginDependency>) {
val pluginId = plugin.get().pluginId
if (!pluginManager.hasPlugin(pluginId)) {
pluginManager.apply(pluginId)
}
}

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -16,7 +16,7 @@ android {
namespace = "io.element.android.services.analytics.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(projects.libraries.androidutils)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.services.analytics.noop"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,6 +1,6 @@
import config.BuildTimeConfig
import extension.buildConfigFieldStr
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -31,7 +31,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,7 +1,7 @@
import config.BuildTimeConfig
import extension.buildConfigFieldStr
import extension.readLocalProperty
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -34,7 +34,7 @@ android {
}
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-compose-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.services.apperror.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -15,7 +15,7 @@ android {
namespace = "io.element.android.services.appnavstate.api"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.coroutines.core)

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2022-2024 New Vector Ltd.
@@ -11,7 +11,7 @@ plugins {
id("io.element.android-library")
}
setupAnvil()
setupDependencyInjection()
android {
namespace = "io.element.android.services.appnavstate.impl"

View File

@@ -1,4 +1,4 @@
import extension.setupAnvil
import extension.setupDependencyInjection
/*
* Copyright 2023, 2024 New Vector Ltd.
@@ -14,7 +14,7 @@ android {
namespace = "io.element.android.services.toolbox.impl"
}
setupAnvil()
setupDependencyInjection()
dependencies {
implementation(libs.dagger)