
com.grab.grazel.migrate.target.KotlinLibraryTargetBuilder.kt Maven / Gradle / Ivy
/*
* Copyright 2022 Grabtaxi Holdings PTE LTD (GRAB)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.grab.grazel.migrate.target
import com.grab.grazel.gradle.isAndroid
import com.grab.grazel.gradle.isKotlin
import com.grab.grazel.migrate.BazelTarget
import com.grab.grazel.migrate.TargetBuilder
import com.grab.grazel.migrate.kotlin.DefaultKotlinProjectDataExtractor
import com.grab.grazel.migrate.kotlin.DefaultKotlinUnitTestDataExtractor
import com.grab.grazel.migrate.kotlin.KotlinLibraryTarget
import com.grab.grazel.migrate.kotlin.KotlinProjectData
import com.grab.grazel.migrate.kotlin.KotlinProjectDataExtractor
import com.grab.grazel.migrate.kotlin.KotlinUnitTestDataExtractor
import com.grab.grazel.migrate.kotlin.toUnitTestTarget
import dagger.Binds
import dagger.Module
import dagger.multibindings.IntoSet
import org.gradle.api.Project
import javax.inject.Inject
import javax.inject.Singleton
@Module
internal interface KotlinLibraryTargetBuilderModule {
@Binds
fun DefaultKotlinProjectDataExtractor.bindKotlinProjectDataExtractor(): KotlinProjectDataExtractor
@Binds
fun DefaultKotlinUnitTestDataExtractor.bindKotlinUnitTestDataExtractor(): KotlinUnitTestDataExtractor
@Binds
@IntoSet
fun KotlinLibraryTargetBuilder.bindKtLibTargetBuilder(): TargetBuilder
}
@Singleton
internal class KotlinLibraryTargetBuilder
@Inject
constructor(
private val projectDataExtractor: KotlinProjectDataExtractor,
private val kotlinUnitTestDataExtractor: KotlinUnitTestDataExtractor,
) : TargetBuilder {
override fun build(project: Project): List {
val projectData = projectDataExtractor.extract(project)
val ktLibTargets = projectData.toKotlinLibraryTarget()
val unitTestsTargets = kotlinUnitTestDataExtractor
.extract(project)
.toUnitTestTarget()
return listOf(ktLibTargets, unitTestsTargets)
}
override fun canHandle(project: Project): Boolean = with(project) {
!isAndroid && isKotlin
}
private fun KotlinProjectData.toKotlinLibraryTarget() = KotlinLibraryTarget(
name = name,
srcs = srcs,
res = res,
deps = deps,
tags = tags,
lintConfigData = lintConfigData
)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy