rewrite on multiplatform

This commit is contained in:
2021-03-01 20:17:06 +06:00
parent 376691ef74
commit f1595bb5ed
36 changed files with 347 additions and 108 deletions

View File

@@ -0,0 +1,72 @@
package dev.inmo.kmppscriptbuilder.core.models
import dev.inmo.kmppscriptbuilder.core.export.jvm_only.buildJvmOnlyMavenConfig
import dev.inmo.kmppscriptbuilder.core.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)
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
)