73 lines
2.4 KiB
Kotlin
73 lines
2.4 KiB
Kotlin
package com.insanusmokrassar.kmppscriptbuilder.models
|
|
|
|
import com.insanusmokrassar.kmppscriptbuilder.export.jvm_only.buildJvmOnlyMavenConfig
|
|
import com.insanusmokrassar.kmppscriptbuilder.export.mpp.buildMultiplatformMavenConfig
|
|
import kotlinx.serialization.*
|
|
import kotlinx.serialization.builtins.serializer
|
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
|
import kotlinx.serialization.encoding.Decoder
|
|
import kotlinx.serialization.encoding.Encoder
|
|
|
|
@Serializable(ProjectTypeSerializer::class)
|
|
sealed class ProjectType {
|
|
abstract val name: String
|
|
// abstract fun buildBintrayGradleConfig(bintrayConfig: BintrayConfig, licenses: List<License>): String
|
|
abstract fun buildMavenGradleConfig(mavenConfig: MavenConfig, licenses: List<License>): String
|
|
}
|
|
|
|
@Serializer(ProjectType::class)
|
|
internal object ProjectTypeSerializer : KSerializer<ProjectType> {
|
|
override val descriptor: SerialDescriptor = String.serializer().descriptor
|
|
override fun deserialize(decoder: Decoder): ProjectType {
|
|
return when (decoder.decodeString()) {
|
|
JVMProjectType.name -> JVMProjectType
|
|
else -> MultiplatformProjectType
|
|
}
|
|
}
|
|
|
|
override fun serialize(encoder: Encoder, value: ProjectType) {
|
|
encoder.encodeString(value.name)
|
|
}
|
|
}
|
|
|
|
object MultiplatformProjectType : ProjectType() {
|
|
override val name: String = "Multiplatform"
|
|
// override fun buildBintrayGradleConfig(
|
|
// bintrayConfig: BintrayConfig,
|
|
// licenses: List<License>
|
|
// ): String = bintrayConfig.buildMultiplatformGradleConfig(
|
|
// licenses
|
|
// )
|
|
|
|
override fun buildMavenGradleConfig(
|
|
mavenConfig: MavenConfig,
|
|
licenses: List<License>
|
|
): String = mavenConfig.buildMultiplatformMavenConfig(
|
|
licenses
|
|
)
|
|
}
|
|
|
|
object JVMProjectType : ProjectType() {
|
|
override val name: String = "JVM"
|
|
// override fun buildBintrayGradleConfig(
|
|
// bintrayConfig: BintrayConfig,
|
|
// licenses: List<License>
|
|
// ): String = bintrayConfig.buildJvmOnlyGradleConfig(
|
|
// licenses
|
|
// )
|
|
|
|
override fun buildMavenGradleConfig(
|
|
mavenConfig: MavenConfig,
|
|
licenses: List<License>
|
|
): String = mavenConfig.buildJvmOnlyMavenConfig(
|
|
licenses
|
|
)
|
|
}
|
|
|
|
@Serializable
|
|
data class Config(
|
|
val licenses: List<License>,
|
|
val mavenConfig: MavenConfig,
|
|
val type: ProjectType = MultiplatformProjectType
|
|
)
|