mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
refactor(build): use a hack to expose catalog type-safe API
This commit is contained in:
parent
8922142ade
commit
fcc20d2f1e
4 changed files with 17 additions and 22 deletions
|
@ -71,4 +71,7 @@ dependencies {
|
||||||
implementation(libs.build.spotless)
|
implementation(libs.build.spotless)
|
||||||
implementation(libs.build.vcu)
|
implementation(libs.build.vcu)
|
||||||
implementation(libs.build.versions)
|
implementation(libs.build.versions)
|
||||||
|
|
||||||
|
// Expose the generated version catalog API to the plugin.
|
||||||
|
implementation(files(libs::class.java.superclass.protectionDomain.codeSource.location))
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,14 +15,13 @@ import com.android.build.api.variant.HasUnitTestBuilder
|
||||||
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
||||||
import com.android.build.gradle.BaseExtension
|
import com.android.build.gradle.BaseExtension
|
||||||
import dev.msfjarvis.claw.gradle.LintConfig.configureLint
|
import dev.msfjarvis.claw.gradle.LintConfig.configureLint
|
||||||
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
import org.gradle.android.AndroidCacheFixPlugin
|
import org.gradle.android.AndroidCacheFixPlugin
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.VersionCatalogsExtension
|
|
||||||
import org.gradle.kotlin.dsl.apply
|
import org.gradle.kotlin.dsl.apply
|
||||||
import org.gradle.kotlin.dsl.configure
|
import org.gradle.kotlin.dsl.configure
|
||||||
import org.gradle.kotlin.dsl.findByType
|
import org.gradle.kotlin.dsl.findByType
|
||||||
import org.gradle.kotlin.dsl.getByType
|
|
||||||
|
|
||||||
class AndroidCommonPlugin : Plugin<Project> {
|
class AndroidCommonPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
@ -59,10 +58,9 @@ class AndroidCommonPlugin : Plugin<Project> {
|
||||||
}
|
}
|
||||||
project.extensions.findByType<ApplicationExtension>()?.lint?.configureLint(project)
|
project.extensions.findByType<ApplicationExtension>()?.lint?.configureLint(project)
|
||||||
project.extensions.findByType<LibraryExtension>()?.lint?.configureLint(project)
|
project.extensions.findByType<LibraryExtension>()?.lint?.configureLint(project)
|
||||||
val catalog = project.extensions.getByType<VersionCatalogsExtension>()
|
val libs = project.extensions.getByName("libs") as LibrariesForLibs
|
||||||
val libs = catalog.named("libs")
|
project.dependencies.addProvider("lintChecks", libs.slack.compose.lints)
|
||||||
project.dependencies.addProvider("lintChecks", libs.findLibrary("slack-compose-lints").get())
|
project.dependencies.addProvider("lintChecks", libs.slack.lints)
|
||||||
project.dependencies.addProvider("lintChecks", libs.findLibrary("slack-lints").get())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Project.configureSlimTests() {
|
private fun Project.configureSlimTests() {
|
||||||
|
|
|
@ -10,20 +10,18 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
||||||
import io.sentry.android.gradle.extensions.InstrumentationFeature
|
import io.sentry.android.gradle.extensions.InstrumentationFeature
|
||||||
import io.sentry.android.gradle.extensions.SentryPluginExtension
|
import io.sentry.android.gradle.extensions.SentryPluginExtension
|
||||||
import java.util.EnumSet
|
import java.util.EnumSet
|
||||||
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.VersionCatalogsExtension
|
|
||||||
import org.gradle.kotlin.dsl.apply
|
import org.gradle.kotlin.dsl.apply
|
||||||
import org.gradle.kotlin.dsl.configure
|
import org.gradle.kotlin.dsl.configure
|
||||||
import org.gradle.kotlin.dsl.getByType
|
|
||||||
|
|
||||||
@Suppress("Unused")
|
@Suppress("Unused")
|
||||||
class SentryPlugin : Plugin<Project> {
|
class SentryPlugin : Plugin<Project> {
|
||||||
|
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
project.pluginManager.withPlugin("com.android.application") {
|
project.pluginManager.withPlugin("com.android.application") {
|
||||||
val catalog = project.extensions.getByType<VersionCatalogsExtension>()
|
val libs = project.extensions.getByName("libs") as LibrariesForLibs
|
||||||
val libs = catalog.named("libs")
|
|
||||||
project.extensions.configure<ApplicationAndroidComponentsExtension> {
|
project.extensions.configure<ApplicationAndroidComponentsExtension> {
|
||||||
onVariants(selector().all()) { variant ->
|
onVariants(selector().all()) { variant ->
|
||||||
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
|
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
|
||||||
|
@ -52,13 +50,11 @@ class SentryPlugin : Plugin<Project> {
|
||||||
experimentalGuardsquareSupport.set(false)
|
experimentalGuardsquareSupport.set(false)
|
||||||
autoInstallation {
|
autoInstallation {
|
||||||
enabled.set(true)
|
enabled.set(true)
|
||||||
sentryVersion.set(libs.findVersion("sentry-sdk").get().requiredVersion)
|
sentryVersion.set(libs.versions.sentry.sdk)
|
||||||
}
|
}
|
||||||
includeDependenciesReport.set(true)
|
includeDependenciesReport.set(true)
|
||||||
}
|
}
|
||||||
with(project.dependencies) {
|
with(project.dependencies) { addProvider("implementation", platform(libs.sentry.bom)) }
|
||||||
addProvider("implementation", platform(libs.findLibrary("sentry-bom").get()))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,29 +6,27 @@
|
||||||
*/
|
*/
|
||||||
package dev.msfjarvis.claw.gradle
|
package dev.msfjarvis.claw.gradle
|
||||||
|
|
||||||
|
import org.gradle.accessors.dm.LibrariesForLibs
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ExternalModuleDependency
|
import org.gradle.api.artifacts.ExternalModuleDependency
|
||||||
import org.gradle.api.artifacts.MinimalExternalModuleDependency
|
import org.gradle.api.artifacts.MinimalExternalModuleDependency
|
||||||
import org.gradle.api.artifacts.VersionCatalogsExtension
|
|
||||||
import org.gradle.kotlin.dsl.DependencyHandlerScope
|
import org.gradle.kotlin.dsl.DependencyHandlerScope
|
||||||
import org.gradle.kotlin.dsl.exclude
|
import org.gradle.kotlin.dsl.exclude
|
||||||
import org.gradle.kotlin.dsl.getByType
|
|
||||||
|
|
||||||
/** Extension function to configure JUnit5 dependencies with the Truth assertion library. */
|
/** Extension function to configure JUnit5 dependencies with the Truth assertion library. */
|
||||||
fun DependencyHandlerScope.addTestDependencies(project: Project) {
|
fun DependencyHandlerScope.addTestDependencies(project: Project) {
|
||||||
val catalog = project.extensions.getByType<VersionCatalogsExtension>()
|
val libs = project.extensions.getByName("libs") as LibrariesForLibs
|
||||||
val libs = catalog.named("libs")
|
addProvider("testImplementation", libs.junit.jupiter.api)
|
||||||
addProvider("testImplementation", libs.findLibrary("junit-jupiter-api").get())
|
|
||||||
addProvider<MinimalExternalModuleDependency, ExternalModuleDependency>(
|
addProvider<MinimalExternalModuleDependency, ExternalModuleDependency>(
|
||||||
"testImplementation",
|
"testImplementation",
|
||||||
libs.findLibrary("truth").get(),
|
libs.truth,
|
||||||
) {
|
) {
|
||||||
exclude(group = "junit", module = "junit")
|
exclude(group = "junit", module = "junit")
|
||||||
}
|
}
|
||||||
addProvider("testRuntimeOnly", libs.findLibrary("junit-jupiter-engine").get())
|
addProvider("testRuntimeOnly", libs.junit.jupiter.engine)
|
||||||
addProvider<MinimalExternalModuleDependency, ExternalModuleDependency>(
|
addProvider<MinimalExternalModuleDependency, ExternalModuleDependency>(
|
||||||
"testRuntimeOnly",
|
"testRuntimeOnly",
|
||||||
libs.findLibrary("junit-legacy").get(),
|
libs.junit.legacy,
|
||||||
) {
|
) {
|
||||||
// See https://github.com/google/truth/issues/333
|
// See https://github.com/google/truth/issues/333
|
||||||
because("Truth needs it")
|
because("Truth needs it")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue