diff -r 882d271b5297 -r e3215d4393f1 buildSrc/src/main/kotlin/VersionAlignment.kt --- a/buildSrc/src/main/kotlin/VersionAlignment.kt Sun Jan 28 15:20:28 2024 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* - * Geekdroid is a utility library for development on the Android - * Platform. - * - * Copyright (C) 2017-2024 by Frederic-Charles Barthelery. - * - * This file is part of Geekdroid. - * - * Geekdroid is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Geekdroid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Geekdroid. If not, see . - */ -package com.geekorum.build - -import org.gradle.api.artifacts.ComponentMetadataContext -import org.gradle.api.artifacts.ComponentMetadataRule -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.dsl.ComponentMetadataHandler -import org.gradle.api.artifacts.dsl.DependencyHandler - -private val componentsPlatform = mutableMapOf>() - -fun DependencyHandler.createComponentsPlatforms() { - components.apply { - getOrCreatePlatform(DaggerPlatform) - } -} - -private fun ComponentMetadataHandler.getOrCreatePlatform(platformFactory: PlatformFactory): String { - val componentsSet = componentsPlatform.getOrPut(this) { mutableSetOf() } - if (!componentsSet.contains(platformFactory.platformName)) { - componentsSet.add(platformFactory.createPlatform(this)) - } - return platformFactory.platformName -} - -internal class DaggerPlatform { - companion object : PlatformFactory("com.google.dagger:dagger-platform", - AlignmentRule::class.java) - - open class AlignmentRule : SameGroupAlignmentRule(platformName, "com.google.dagger") -} - -fun DependencyHandler.daggerPlatform(version: String): Dependency { - return platform("${components.getOrCreatePlatform(DaggerPlatform)}:$version") -} - -open class PlatformFactory( - internal val platformName: String, - private val alignmentRule: Class -) { - fun createPlatform(components: ComponentMetadataHandler): String { - components.all(alignmentRule) - return platformName - } -} - -internal open class SameGroupAlignmentRule( - private val platformName: String, - private val group: String -) : ComponentMetadataRule { - - override fun execute(ctx: ComponentMetadataContext) { - ctx.details.run { - if (id.group == group) { - belongsTo("$platformName:${id.version}") - } - } - } - -}