All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.GradleKpmDependencyFilesHolder.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0-RC3
Show newest version
/*
 * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util

import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmAbstractFragmentMetadataCompilationData
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariantWithRuntime
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
import org.jetbrains.kotlin.gradle.utils.filesProvider

interface GradleKpmDependencyFilesHolder {
    val dependencyConfigurationName: String
    var dependencyFiles: FileCollection

    companion object
}

internal fun GradleKpmDependencyFilesHolder.Companion.ofVariantCompileDependencies(variant: GradleKpmVariant): GradleKpmDependencyFilesHolder =
    object : GradleKpmDependencyFilesHolder {
        override val dependencyConfigurationName: String
            get() = variant.compileDependenciesConfiguration.name
        override var dependencyFiles: FileCollection
            get() = variant.compileDependencyFiles
            set(value) { variant.compileDependencyFiles = value }
    }

internal fun GradleKpmDependencyFilesHolder.Companion.ofVariantRuntimeDependencies(variant: GradleKpmVariantWithRuntime): GradleKpmDependencyFilesHolder =
    object : GradleKpmDependencyFilesHolder {
        override val dependencyConfigurationName: String
            get() = variant.runtimeDependenciesConfiguration.name
        override var dependencyFiles: FileCollection
            get() = variant.runtimeDependencyFiles
            set(value) { variant.runtimeDependencyFiles = value }
    }

internal fun GradleKpmDependencyFilesHolder.Companion.ofMetadataCompilationDependencies(
    compilationData: GradleKpmAbstractFragmentMetadataCompilationData<*>
) = object : GradleKpmDependencyFilesHolder {
    override val dependencyConfigurationName: String
        get() = compilationData.fragment.containingModule.resolvableMetadataConfigurationName

    override var dependencyFiles: FileCollection
        get() = compilationData.compileDependencyFiles
        set(value) { compilationData.compileDependencyFiles = value }
}

class SimpleDependencyFilesHolder(
    override val dependencyConfigurationName: String,
    override var dependencyFiles: FileCollection
) : GradleKpmDependencyFilesHolder

internal fun Project.newDependencyFilesHolder(dependencyConfigurationName: String): GradleKpmDependencyFilesHolder =
    SimpleDependencyFilesHolder(
        dependencyConfigurationName,
        project.filesProvider { project.configurations.getByName(dependencyConfigurationName) }
    )




© 2015 - 2024 Weber Informatics LLC | Privacy Policy