mirror of
				https://github.com/InsanusMokrassar/KotlinPublicationScriptsBuilder.git
				synced 2025-11-03 20:50:06 +00:00 
			
		
		
		
	add support of JS publish scripts
This commit is contained in:
		@@ -0,0 +1,27 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.core.export
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.models.GpgSigning
 | 
			
		||||
 | 
			
		||||
fun GpgSigning.generateMavenConfig() = when (this) {
 | 
			
		||||
    GpgSigning.Disabled -> ""
 | 
			
		||||
    GpgSigning.Optional ->
 | 
			
		||||
"""
 | 
			
		||||
if (project.hasProperty("signing.gnupg.keyName")) {
 | 
			
		||||
    apply plugin: 'signing'
 | 
			
		||||
    
 | 
			
		||||
    signing {
 | 
			
		||||
        useGpgCmd()
 | 
			
		||||
    
 | 
			
		||||
        sign publishing.publications
 | 
			
		||||
    }
 | 
			
		||||
}"""
 | 
			
		||||
    GpgSigning.Enabled ->
 | 
			
		||||
"""
 | 
			
		||||
apply plugin: 'signing'
 | 
			
		||||
 | 
			
		||||
signing {
 | 
			
		||||
    useGpgCmd()
 | 
			
		||||
 | 
			
		||||
    sign publishing.publications
 | 
			
		||||
}"""
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,67 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.core.export.js_only
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.generateMavenConfig
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.models.*
 | 
			
		||||
 | 
			
		||||
fun MavenConfig.buildJsOnlyMavenConfig(licenses: List<License>): String = """
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
task javadocJar(type: Jar) {
 | 
			
		||||
    classifier = 'javadoc'
 | 
			
		||||
}
 | 
			
		||||
task sourcesJar(type: Jar) {
 | 
			
		||||
    kotlin.sourceSets.all {
 | 
			
		||||
        from(kotlin)
 | 
			
		||||
    }
 | 
			
		||||
    classifier = 'sources'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
publishing {
 | 
			
		||||
    publications {
 | 
			
		||||
        maven(MavenPublication) {
 | 
			
		||||
            kotlin.js().components.forEach {
 | 
			
		||||
                from(it)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            artifact javadocJar
 | 
			
		||||
            artifact sourcesJar
 | 
			
		||||
 | 
			
		||||
            pom {
 | 
			
		||||
                resolveStrategy = Closure.DELEGATE_FIRST
 | 
			
		||||
 | 
			
		||||
                description = "$description"
 | 
			
		||||
                name = "$name"
 | 
			
		||||
                url = "$url"
 | 
			
		||||
 | 
			
		||||
                scm {
 | 
			
		||||
                    developerConnection = "scm:git:[fetch=]${vcsUrl}[push=]${vcsUrl}"
 | 
			
		||||
                    url = "$vcsUrl"
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                developers {
 | 
			
		||||
                    ${developers.joinToString("\n") { """
 | 
			
		||||
                        developer {
 | 
			
		||||
                            id = "${it.id}"
 | 
			
		||||
                            name = "${it.name}"
 | 
			
		||||
                            email = "${it.eMail}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                licenses {
 | 
			
		||||
                    ${licenses.joinToString("\n") { """
 | 
			
		||||
                        license {
 | 
			
		||||
                            name = "${it.title}"
 | 
			
		||||
                            url = "${it.url}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            repositories {
 | 
			
		||||
                ${repositories.joinToString("\n                    ") { it.build("                    ") }}
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
${gpgSigning.generateMavenConfig()}
 | 
			
		||||
""".trimIndent()
 | 
			
		||||
@@ -1,69 +1,64 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.core.export.jvm_only
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.generateMavenConfig
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.models.*
 | 
			
		||||
 | 
			
		||||
fun MavenConfig.buildJvmOnlyMavenConfig(licenses: List<License>): String = """
 | 
			
		||||
    apply plugin: 'maven-publish'
 | 
			
		||||
    ${if (includeGpgSigning) "apply plugin: 'signing'\n" else ""}
 | 
			
		||||
    
 | 
			
		||||
    task javadocJar(type: Jar) {
 | 
			
		||||
        from javadoc
 | 
			
		||||
        classifier = 'javadoc'
 | 
			
		||||
    }
 | 
			
		||||
    task sourcesJar(type: Jar) {
 | 
			
		||||
        from sourceSets.main.allSource
 | 
			
		||||
        classifier = 'sources'
 | 
			
		||||
    }
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
    publishing {
 | 
			
		||||
        publications {
 | 
			
		||||
            maven(MavenPublication) {
 | 
			
		||||
                from components.java
 | 
			
		||||
    
 | 
			
		||||
                artifact javadocJar
 | 
			
		||||
                artifact sourcesJar
 | 
			
		||||
task javadocJar(type: Jar) {
 | 
			
		||||
    from javadoc
 | 
			
		||||
    classifier = 'javadoc'
 | 
			
		||||
}
 | 
			
		||||
task sourcesJar(type: Jar) {
 | 
			
		||||
    from sourceSets.main.allSource
 | 
			
		||||
    classifier = 'sources'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
                pom {
 | 
			
		||||
                    resolveStrategy = Closure.DELEGATE_FIRST
 | 
			
		||||
publishing {
 | 
			
		||||
    publications {
 | 
			
		||||
        maven(MavenPublication) {
 | 
			
		||||
            from components.java
 | 
			
		||||
 | 
			
		||||
                    description = "$description"
 | 
			
		||||
                    name = "$name"
 | 
			
		||||
                    url = "$url"
 | 
			
		||||
            artifact javadocJar
 | 
			
		||||
            artifact sourcesJar
 | 
			
		||||
 | 
			
		||||
                    scm {
 | 
			
		||||
                        developerConnection = "scm:git:[fetch=]${vcsUrl}[push=]${vcsUrl}"
 | 
			
		||||
                        url = "$vcsUrl"
 | 
			
		||||
                    }
 | 
			
		||||
            pom {
 | 
			
		||||
                resolveStrategy = Closure.DELEGATE_FIRST
 | 
			
		||||
 | 
			
		||||
                    developers {
 | 
			
		||||
                        ${developers.joinToString("\n") { """
 | 
			
		||||
                            developer {
 | 
			
		||||
                                id = "${it.id}"
 | 
			
		||||
                                name = "${it.name}"
 | 
			
		||||
                                email = "${it.eMail}"
 | 
			
		||||
                            }
 | 
			
		||||
                        """ }}
 | 
			
		||||
                    }
 | 
			
		||||
                description = "$description"
 | 
			
		||||
                name = "$name"
 | 
			
		||||
                url = "$url"
 | 
			
		||||
 | 
			
		||||
                    licenses {
 | 
			
		||||
                        ${licenses.joinToString("\n") { """
 | 
			
		||||
                            license {
 | 
			
		||||
                                name = "${it.title}"
 | 
			
		||||
                                url = "${it.url}"
 | 
			
		||||
                            }
 | 
			
		||||
                        """ }}
 | 
			
		||||
                    }
 | 
			
		||||
                scm {
 | 
			
		||||
                    developerConnection = "scm:git:[fetch=]${vcsUrl}[push=]${vcsUrl}"
 | 
			
		||||
                    url = "$vcsUrl"
 | 
			
		||||
                }
 | 
			
		||||
                repositories {
 | 
			
		||||
                    ${repositories.joinToString("\n                    ") { it.build("                    ") }}
 | 
			
		||||
 | 
			
		||||
                developers {
 | 
			
		||||
                    ${developers.joinToString("\n") { """
 | 
			
		||||
                        developer {
 | 
			
		||||
                            id = "${it.id}"
 | 
			
		||||
                            name = "${it.name}"
 | 
			
		||||
                            email = "${it.eMail}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                licenses {
 | 
			
		||||
                    ${licenses.joinToString("\n") { """
 | 
			
		||||
                        license {
 | 
			
		||||
                            name = "${it.title}"
 | 
			
		||||
                            url = "${it.url}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            repositories {
 | 
			
		||||
                ${repositories.joinToString("\n                    ") { it.build("                    ") }}
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    ${if (includeGpgSigning) """
 | 
			
		||||
    signing {
 | 
			
		||||
        useGpgCmd()
 | 
			
		||||
        sign publishing.publications
 | 
			
		||||
    }
 | 
			
		||||
    """ else ""}
 | 
			
		||||
""".trimIndent()
 | 
			
		||||
}
 | 
			
		||||
${gpgSigning.generateMavenConfig()}
 | 
			
		||||
""".trimIndent()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,56 +1,52 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.core.export.mpp
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.generateMavenConfig
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.models.*
 | 
			
		||||
 | 
			
		||||
fun MavenConfig.buildMultiplatformMavenConfig(licenses: List<License>): String = """
 | 
			
		||||
    apply plugin: 'maven-publish'
 | 
			
		||||
    ${if (includeGpgSigning) "apply plugin: 'signing'\n" else ""}
 | 
			
		||||
    task javadocsJar(type: Jar) {
 | 
			
		||||
        classifier = 'javadoc'
 | 
			
		||||
    }
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
 | 
			
		||||
    publishing {
 | 
			
		||||
        publications.all {
 | 
			
		||||
            artifact javadocsJar
 | 
			
		||||
task javadocsJar(type: Jar) {
 | 
			
		||||
    classifier = 'javadoc'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
            pom {
 | 
			
		||||
                description = "$description"
 | 
			
		||||
                name = "$name"
 | 
			
		||||
                url = "$url"
 | 
			
		||||
publishing {
 | 
			
		||||
    publications.all {
 | 
			
		||||
        artifact javadocsJar
 | 
			
		||||
 | 
			
		||||
                scm {
 | 
			
		||||
                    developerConnection = "scm:git:[fetch=]${vcsUrl}[push=]${vcsUrl}"
 | 
			
		||||
                    url = "$vcsUrl"
 | 
			
		||||
                }
 | 
			
		||||
        pom {
 | 
			
		||||
            description = "$description"
 | 
			
		||||
            name = "$name"
 | 
			
		||||
            url = "$url"
 | 
			
		||||
 | 
			
		||||
                developers {
 | 
			
		||||
                    ${developers.joinToString("\n") { """
 | 
			
		||||
                        developer {
 | 
			
		||||
                            id = "${it.id}"
 | 
			
		||||
                            name = "${it.name}"
 | 
			
		||||
                            email = "${it.eMail}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                licenses {
 | 
			
		||||
                    ${licenses.joinToString("\n") { """
 | 
			
		||||
                        license {
 | 
			
		||||
                            name = "${it.title}"
 | 
			
		||||
                            url = "${it.url}"
 | 
			
		||||
                        }
 | 
			
		||||
                    """ }}
 | 
			
		||||
                }
 | 
			
		||||
            scm {
 | 
			
		||||
                developerConnection = "scm:git:[fetch=]${vcsUrl}[push=]${vcsUrl}"
 | 
			
		||||
                url = "$vcsUrl"
 | 
			
		||||
            }
 | 
			
		||||
            repositories {
 | 
			
		||||
                ${repositories.joinToString("\n                ") { it.build("                ") }}
 | 
			
		||||
 | 
			
		||||
            developers {
 | 
			
		||||
                ${developers.joinToString("\n") { """
 | 
			
		||||
                    developer {
 | 
			
		||||
                        id = "${it.id}"
 | 
			
		||||
                        name = "${it.name}"
 | 
			
		||||
                        email = "${it.eMail}"
 | 
			
		||||
                    }
 | 
			
		||||
                """ }}
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            licenses {
 | 
			
		||||
                ${licenses.joinToString("\n") { """
 | 
			
		||||
                    license {
 | 
			
		||||
                        name = "${it.title}"
 | 
			
		||||
                        url = "${it.url}"
 | 
			
		||||
                    }
 | 
			
		||||
                """ }}
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        repositories {
 | 
			
		||||
            ${repositories.joinToString("\n                ") { it.build("                ") }}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    ${if (includeGpgSigning) """
 | 
			
		||||
    signing {
 | 
			
		||||
        useGpgCmd()
 | 
			
		||||
        sign publishing.publications
 | 
			
		||||
    }
 | 
			
		||||
    """ else ""}
 | 
			
		||||
""".trimIndent()
 | 
			
		||||
}
 | 
			
		||||
    ${gpgSigning.generateMavenConfig()}
 | 
			
		||||
""".trimIndent()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.core.models
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.js_only.buildJsOnlyMavenConfig
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.jvm_only.buildJvmOnlyMavenConfig
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.export.mpp.buildMultiplatformMavenConfig
 | 
			
		||||
import kotlinx.serialization.*
 | 
			
		||||
@@ -32,12 +33,6 @@ object ProjectTypeSerializer : KSerializer<ProjectType> {
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		||||
@@ -49,12 +44,6 @@ object MultiplatformProjectType : ProjectType() {
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		||||
@@ -64,6 +53,15 @@ object JVMProjectType : ProjectType() {
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
object JSProjectType : ProjectType() {
 | 
			
		||||
    override val name: String = "JS"
 | 
			
		||||
 | 
			
		||||
    override fun buildMavenGradleConfig(
 | 
			
		||||
        mavenConfig: MavenConfig,
 | 
			
		||||
        licenses: List<License>
 | 
			
		||||
    ): String = mavenConfig.buildJsOnlyMavenConfig(licenses)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
data class Config(
 | 
			
		||||
    val licenses: List<License>,
 | 
			
		||||
 
 | 
			
		||||
@@ -5,15 +5,27 @@ import kotlinx.serialization.Serializable
 | 
			
		||||
const val defaultProjectName = "\${project.name}"
 | 
			
		||||
const val defaultProjectDescription = "\${project.name}"
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
sealed class GpgSigning {
 | 
			
		||||
    @Serializable
 | 
			
		||||
    object Disabled : GpgSigning()
 | 
			
		||||
    @Serializable
 | 
			
		||||
    object Optional : GpgSigning()
 | 
			
		||||
    @Serializable
 | 
			
		||||
    object Enabled : GpgSigning()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
data class MavenConfig(
 | 
			
		||||
    val name: String,
 | 
			
		||||
    val description: String,
 | 
			
		||||
    val url: String,
 | 
			
		||||
    val vcsUrl: String,
 | 
			
		||||
    val includeGpgSigning: Boolean = false,
 | 
			
		||||
    val developers: List<Developer>,
 | 
			
		||||
    val repositories: List<MavenPublishingRepository> = emptyList()
 | 
			
		||||
    val repositories: List<MavenPublishingRepository> = emptyList(),
 | 
			
		||||
    val gpgSigning: GpgSigning = GpgSigning.Disabled,
 | 
			
		||||
    @Deprecated("Replaced with gpgSigning")
 | 
			
		||||
    val includeGpgSigning: Boolean = false,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ class MavenInfoView : VerticalView("Project information") {
 | 
			
		||||
    private var projectDescriptionProperty by mutableStateOf("")
 | 
			
		||||
    private var projectUrlProperty by mutableStateOf("")
 | 
			
		||||
    private var projectVcsUrlProperty by mutableStateOf("")
 | 
			
		||||
    private var includeGpgSignProperty by mutableStateOf(true)
 | 
			
		||||
    private var gpgSignProperty by mutableStateOf<GpgSigning>(GpgSigning.Disabled)
 | 
			
		||||
    private var publishToMavenCentralProperty by mutableStateOf(false)
 | 
			
		||||
    private val developersView = DevelopersView()
 | 
			
		||||
    private val repositoriesView = RepositoriesView()
 | 
			
		||||
@@ -21,20 +21,24 @@ class MavenInfoView : VerticalView("Project information") {
 | 
			
		||||
            projectDescriptionProperty.ifBlank { defaultProjectDescription },
 | 
			
		||||
            projectUrlProperty,
 | 
			
		||||
            projectVcsUrlProperty,
 | 
			
		||||
            includeGpgSignProperty,
 | 
			
		||||
            developersView.developers,
 | 
			
		||||
            repositoriesView.repositories + if (publishToMavenCentralProperty) {
 | 
			
		||||
                listOf(SonatypeRepository)
 | 
			
		||||
            } else {
 | 
			
		||||
                emptyList()
 | 
			
		||||
            }
 | 
			
		||||
            },
 | 
			
		||||
            gpgSignProperty
 | 
			
		||||
        )
 | 
			
		||||
        set(value) {
 | 
			
		||||
            projectNameProperty = value.name
 | 
			
		||||
            projectDescriptionProperty = value.description
 | 
			
		||||
            projectUrlProperty = value.url
 | 
			
		||||
            projectVcsUrlProperty = value.vcsUrl
 | 
			
		||||
            includeGpgSignProperty = value.includeGpgSigning
 | 
			
		||||
            gpgSignProperty = if (value.includeGpgSigning) {
 | 
			
		||||
                GpgSigning.Enabled
 | 
			
		||||
            } else {
 | 
			
		||||
                value.gpgSigning
 | 
			
		||||
            }
 | 
			
		||||
            publishToMavenCentralProperty = value.repositories.any { it == SonatypeRepository }
 | 
			
		||||
            developersView.developers = value.developers
 | 
			
		||||
            repositoriesView.repositories = value.repositories.filter { it != SonatypeRepository }
 | 
			
		||||
@@ -59,11 +63,12 @@ class MavenInfoView : VerticalView("Project information") {
 | 
			
		||||
            "Public project VCS URL (with .git)"
 | 
			
		||||
        ) { projectVcsUrlProperty = it }
 | 
			
		||||
 | 
			
		||||
        SwitchWithLabel(
 | 
			
		||||
            "Include GPG Signing",
 | 
			
		||||
            includeGpgSignProperty,
 | 
			
		||||
            placeSwitchAtTheStart = true
 | 
			
		||||
        ) { includeGpgSignProperty = it }
 | 
			
		||||
 | 
			
		||||
//        SwitchWithLabel(
 | 
			
		||||
//            "Include GPG Signing",
 | 
			
		||||
//            includeGpgSignProperty,
 | 
			
		||||
//            placeSwitchAtTheStart = true
 | 
			
		||||
//        ) { includeGpgSignProperty = it }
 | 
			
		||||
 | 
			
		||||
        SwitchWithLabel(
 | 
			
		||||
            "Include publication to MavenCentral",
 | 
			
		||||
@@ -73,4 +78,4 @@ class MavenInfoView : VerticalView("Project information") {
 | 
			
		||||
        developersView.init()
 | 
			
		||||
        repositoriesView.init()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package dev.inmo.kmppscriptbuilder.web.views
 | 
			
		||||
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.core.models.*
 | 
			
		||||
import dev.inmo.kmppscriptbuilder.web.utils.ukActive
 | 
			
		||||
import kotlinx.browser.document
 | 
			
		||||
import org.w3c.dom.HTMLElement
 | 
			
		||||
import org.w3c.dom.HTMLInputElement
 | 
			
		||||
@@ -10,23 +11,51 @@ class MavenProjectInfoView : View {
 | 
			
		||||
    private val descriptionElement = document.getElementById("projectDescriptionInput") as HTMLInputElement
 | 
			
		||||
    private val urlElement = document.getElementById("projectUrlInput") as HTMLInputElement
 | 
			
		||||
    private val vcsUrlElement = document.getElementById("projectVCSUrlInput") as HTMLInputElement
 | 
			
		||||
    private val includeGpgElement = document.getElementById("includeGpgSignToggle") as HTMLInputElement
 | 
			
		||||
    private val disableGpgSigningElement = document.getElementById("disableGpgSigning") as HTMLElement
 | 
			
		||||
    private val optionalGpgSigningElement = document.getElementById("optionalGpgSigning") as HTMLElement
 | 
			
		||||
    private val enableGpgSigningElement = document.getElementById("enableGpgSigning") as HTMLElement
 | 
			
		||||
    private val includeMavenCentralElement = document.getElementById("includeMavenCentralTargetRepoToggle") as HTMLInputElement
 | 
			
		||||
    private val developersView = DevelopersView(document.getElementById("developersListDiv") as HTMLElement)
 | 
			
		||||
    private val repositoriesView = RepositoriesView(document.getElementById("repositoriesListDiv") as HTMLElement)
 | 
			
		||||
 | 
			
		||||
    private var gpgSignMode: GpgSigning = GpgSigning.Disabled
 | 
			
		||||
        set(value) {
 | 
			
		||||
            field = value
 | 
			
		||||
            when (value) {
 | 
			
		||||
                GpgSigning.Enabled -> {
 | 
			
		||||
                    enableGpgSigningElement.ukActive = true
 | 
			
		||||
                    disableGpgSigningElement.ukActive = false
 | 
			
		||||
                    optionalGpgSigningElement.ukActive = false
 | 
			
		||||
                }
 | 
			
		||||
                GpgSigning.Optional -> {
 | 
			
		||||
                    enableGpgSigningElement.ukActive = false
 | 
			
		||||
                    disableGpgSigningElement.ukActive = false
 | 
			
		||||
                    optionalGpgSigningElement.ukActive = true
 | 
			
		||||
                }
 | 
			
		||||
                GpgSigning.Disabled -> {
 | 
			
		||||
                    enableGpgSigningElement.ukActive = false
 | 
			
		||||
                    disableGpgSigningElement.ukActive = true
 | 
			
		||||
                    optionalGpgSigningElement.ukActive = false
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    var mavenConfig: MavenConfig
 | 
			
		||||
        get() = MavenConfig(
 | 
			
		||||
            nameElement.value.ifBlank { defaultProjectName },
 | 
			
		||||
            descriptionElement.value.ifBlank { defaultProjectDescription },
 | 
			
		||||
            urlElement.value,
 | 
			
		||||
            vcsUrlElement.value,
 | 
			
		||||
            includeGpgElement.checked,
 | 
			
		||||
            developersView.developers,
 | 
			
		||||
            repositoriesView.repositories + if (includeMavenCentralElement.checked) {
 | 
			
		||||
                listOf(SonatypeRepository)
 | 
			
		||||
            } else {
 | 
			
		||||
                emptyList()
 | 
			
		||||
            },
 | 
			
		||||
            when {
 | 
			
		||||
                optionalGpgSigningElement.ukActive -> GpgSigning.Optional
 | 
			
		||||
                enableGpgSigningElement.ukActive -> GpgSigning.Enabled
 | 
			
		||||
                else -> GpgSigning.Disabled
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
        set(value) {
 | 
			
		||||
@@ -34,10 +63,20 @@ class MavenProjectInfoView : View {
 | 
			
		||||
            descriptionElement.value = value.description
 | 
			
		||||
            urlElement.value = value.url
 | 
			
		||||
            vcsUrlElement.value = value.vcsUrl
 | 
			
		||||
            includeGpgElement.checked = value.includeGpgSigning
 | 
			
		||||
            gpgSignMode = if (value.includeGpgSigning) {
 | 
			
		||||
                GpgSigning.Enabled
 | 
			
		||||
            } else {
 | 
			
		||||
                value.gpgSigning
 | 
			
		||||
            }
 | 
			
		||||
            developersView.developers = value.developers
 | 
			
		||||
            val reposWithoutSonatype = value.repositories.filter { it != SonatypeRepository }
 | 
			
		||||
            includeMavenCentralElement.checked = value.repositories.size != reposWithoutSonatype.size
 | 
			
		||||
            repositoriesView.repositories = reposWithoutSonatype
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        enableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Enabled; Unit }
 | 
			
		||||
        disableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Disabled; Unit }
 | 
			
		||||
        optionalGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Optional; Unit }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,16 +8,18 @@ import org.w3c.dom.HTMLElement
 | 
			
		||||
class ProjectTypeView : View {
 | 
			
		||||
    private val mppProjectTypeElement = document.getElementById("mppProjectType") as HTMLElement
 | 
			
		||||
    private val jvmProjectTypeElement = document.getElementById("jvmProjectType") as HTMLElement
 | 
			
		||||
    private val jsProjectTypeElement = document.getElementById("jsProjectType") as HTMLElement
 | 
			
		||||
 | 
			
		||||
    var projectType: ProjectType
 | 
			
		||||
        get() = if (jvmProjectTypeElement.ukActive) {
 | 
			
		||||
            JVMProjectType
 | 
			
		||||
        } else {
 | 
			
		||||
            MultiplatformProjectType
 | 
			
		||||
        get() = when {
 | 
			
		||||
            jvmProjectTypeElement.ukActive -> JVMProjectType
 | 
			
		||||
            jsProjectTypeElement.ukActive -> JSProjectType
 | 
			
		||||
            else -> MultiplatformProjectType
 | 
			
		||||
        }
 | 
			
		||||
        set(value) {
 | 
			
		||||
            mppProjectTypeElement.ukActive = value == MultiplatformProjectType
 | 
			
		||||
            jvmProjectTypeElement.ukActive = value == JVMProjectType
 | 
			
		||||
            jsProjectTypeElement.ukActive = value == JSProjectType
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
@@ -29,5 +31,9 @@ class ProjectTypeView : View {
 | 
			
		||||
            projectType = JVMProjectType
 | 
			
		||||
            Unit
 | 
			
		||||
        }
 | 
			
		||||
        jsProjectTypeElement.onclick = {
 | 
			
		||||
            projectType = JSProjectType
 | 
			
		||||
            Unit
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,15 +27,11 @@
 | 
			
		||||
                <ul class="uk-subnav uk-subnav-pill">
 | 
			
		||||
                    <li id="mppProjectType" class="uk-active"><a href="#">Multiplatform</a></li>
 | 
			
		||||
                    <li id="jvmProjectType"><a href="#">JVM</a></li>
 | 
			
		||||
                    <li id="jsProjectType"><a href="#">JS</a></li>
 | 
			
		||||
                </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
            <legend class="uk-legend">Licenses</legend>
 | 
			
		||||
            <div id="licensesListDiv" class="uk-padding-small">
 | 
			
		||||
<!--                <div class="uk-margin uk-width-1-1">-->
 | 
			
		||||
<!--                    <input id="searchFilterInput" class="uk-input uk-width-expand" type="text" placeholder="License search filter">-->
 | 
			
		||||
<!--                </div>-->
 | 
			
		||||
<!--                <button class="uk-button uk-button-primary">Add empty license</button>-->
 | 
			
		||||
            </div>
 | 
			
		||||
            <div id="licensesListDiv" class="uk-padding-small"></div>
 | 
			
		||||
 | 
			
		||||
            <legend class="uk-legend">Project information</legend>
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +54,15 @@
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div class="uk-margin">
 | 
			
		||||
                    <label><input id="includeGpgSignToggle" class="uk-checkbox" type="checkbox" checked> Include GPG Signing</label>
 | 
			
		||||
                    <label>GPG Signing</label>
 | 
			
		||||
 | 
			
		||||
                    <div class="uk-padding-small">
 | 
			
		||||
                        <ul class="uk-subnav uk-subnav-pill">
 | 
			
		||||
                            <li id="disableGpgSigning" class="uk-active" uk-tooltip="title: Signing will not be added"><a href="#">Disabled</a></li>
 | 
			
		||||
                            <li id="optionalGpgSigning" uk-tooltip="title: Signing will be added, but disabled in case of absence 'signatory.keyId'"><a href="#">Optional</a></li>
 | 
			
		||||
                            <li id="enableGpgSigning" uk-tooltip="title: Signing will be always enabled"><a href="#">Enabled</a></li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="uk-margin">
 | 
			
		||||
                    <label><input id="includeMavenCentralTargetRepoToggle" class="uk-checkbox" type="checkbox"> Include publication to MavenCentral</label>
 | 
			
		||||
@@ -78,4 +82,4 @@
 | 
			
		||||
    <!-- Internal JS -->
 | 
			
		||||
    <script src="kmppscriptbuilder.web.js"></script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user