Skip to content

Commit 19f3e1a

Browse files
committed
Improved DependencyCreationExtension and simplified debug logging.
1 parent 6128eca commit 19f3e1a

File tree

4 files changed

+44
-44
lines changed

4 files changed

+44
-44
lines changed

build-logic/src/main/kotlin/org/sdkotlin/buildlogic/artifacts/dsl/AttributesDependencyCreationExtension.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import org.slf4j.LoggerFactory
1212
* A [DependencyHandler] extension that sets the attributes for variants of a
1313
* declared [Dependency].
1414
*/
15-
class AttributesDependencyCreationExtension(
15+
abstract class AttributesDependencyCreationExtension(
1616
private val dependencyHandler: DependencyHandler,
1717
private val providers: ProviderFactory,
1818
private val attributesConfigureAction: AttributeContainer.() -> Unit,
@@ -24,15 +24,10 @@ class AttributesDependencyCreationExtension(
2424
providers.provider {
2525

2626
// TODO: Remove debug logging.
27-
try {
28-
throw RuntimeException(
29-
"Attributes dependency helper stacktrace"
30-
)
31-
} catch (e: RuntimeException) {
32-
logger.warn(
33-
"Creating $notation...", e
34-
)
35-
}
27+
logger.warn(
28+
"Creating $notation...",
29+
RuntimeException("Attributes dependency helper stacktrace")
30+
)
3631

3732
val dependency = dependencyHandler.create(notation)
3833

build-logic/src/main/kotlin/org/sdkotlin/buildlogic/artifacts/dsl/DependencyCreationExtension.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,24 @@ package org.sdkotlin.buildlogic.artifacts.dsl
22

33
import org.gradle.api.artifacts.Dependency
44
import org.gradle.api.artifacts.dsl.DependencyHandler
5+
import org.gradle.api.plugins.ExtensionAware
56
import org.gradle.api.provider.Provider
67

78
/**
89
* An invokable interface for [DependencyHandler] extensions that create
910
* dependencies. Facilitates calling the extensions as unqualified helper
1011
* functions.
1112
*/
12-
fun interface DependencyCreationExtension {
13+
interface DependencyCreationExtension : ExtensionAware {
14+
15+
/**
16+
* Ivocable from the Kotlin DSL.
17+
*/
1318
operator fun invoke(notation: Any): Provider<Dependency>
19+
20+
/**
21+
* Invokable from the Groovy DSL.
22+
*/
23+
@Suppress("unused")
24+
fun call(notation: Any): Provider<Dependency> = invoke(notation)
1425
}

build-logic/src/main/kotlin/org/sdkotlin/buildlogic/plugins/resources/ResourceConfigurationVariants.kt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,17 @@ abstract class ResourceConfigurationVariants @Inject constructor(
6868
// Create a variant-aware consumable configuration for this resource
6969
// configuration's artifacts.
7070
@Suppress("UnstableApiUsage")
71-
project.configurations.consumable(theConsumableConfigurationName)
72-
.configure {
73-
// TODO: Remove debug logging.
74-
try {
75-
throw RuntimeException(
76-
"Configuration configureAction stacktrace"
77-
)
78-
} catch (e: RuntimeException) {
79-
logger.warn(
80-
"Configuring $theConsumableConfigurationName...", e
81-
)
82-
}
71+
project.configurations.consumable(theConsumableConfigurationName) {
72+
// TODO: Remove debug logging.
73+
logger.warn(
74+
"Configuring $theConsumableConfigurationName...",
75+
RuntimeException("Configuration configureAction stacktrace")
76+
)
8377

84-
attributes {
85-
applyVariantAttributes()
86-
}
78+
attributes {
79+
applyVariantAttributes()
8780
}
81+
}
8882

8983
// Any files in "src/main/<resourceConfigurationName>/" are
9084
// resources for this configuration. No build step is necessary, so

build-logic/src/main/kotlin/org/sdkotlin/buildlogic/plugins/resources/ResourceConfigurations.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.sdkotlin.buildlogic.plugins.resources
22

33
import org.gradle.api.NamedDomainObjectSet
44
import org.gradle.api.Project
5+
import org.gradle.api.attributes.AttributeContainer
56
import org.sdkotlin.buildlogic.artifacts.dsl.AttributesDependencyCreationExtension
67
import org.sdkotlin.buildlogic.artifacts.dsl.DependencyCreationExtension
78
import javax.inject.Inject
@@ -46,30 +47,29 @@ abstract class ResourceConfigurations @Inject constructor(
4647
name: String,
4748
configureAction: ResourceConfiguration.() -> Unit = {},
4849
) {
49-
5050
val resourceConfiguration =
5151
project.objects.newInstance(ResourceConfiguration::class.java, name)
5252

5353
configureAction(resourceConfiguration)
5454

55-
with(resourceConfiguration) {
56-
57-
// Add a `DependencyHandler` extension for declaring a dependency on
58-
// the resource configuration's artifact variant.
59-
project.dependencies.extensions.add(
60-
DependencyCreationExtension::class.java,
61-
dependencyHandlerExtensionName.get(),
62-
AttributesDependencyCreationExtension(
63-
dependencyHandler = project.dependencies,
64-
providers = project.providers,
65-
attributesConfigureAction = {
66-
applyConfigurationAttributes()
67-
},
68-
)
69-
)
55+
// Add a `DependencyHandler` extension for declaring a dependency on
56+
// the resource configuration's artifact variant.
57+
project.dependencies.extensions.create(
58+
DependencyCreationExtension::class.java,
59+
resourceConfiguration.dependencyHandlerExtensionName.get(),
60+
AttributesDependencyCreationExtension::class.java,
61+
project.dependencies,
62+
project.providers,
63+
{ container: AttributeContainer ->
64+
resourceConfiguration.run {
65+
container.applyConfigurationAttributes()
66+
}
67+
},
68+
)
7069

71-
// Create a default variant for this resource configuration if none
72-
// are added by the user.
70+
// Create a default variant for this resource configuration if none
71+
// are added by the user.
72+
with(resourceConfiguration) {
7373
if (resourceConfigurationVariants.isEmpty()) {
7474
resourceConfigurationVariants.variant(name)
7575
}

0 commit comments

Comments
 (0)