fun fillMissingTags()

in ci/build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/PomDocument.kt [66:122]


    fun fillMissingTags(
        projectUrl: String,
        projectInceptionYear: String,
        licenseName: String,
        licenseUrl: String,
        licenseDistribution: String,
        scmConnection: String,
        scmDeveloperConnection: String,
        scmUrl: String,
        developerName: String,
        developerOrganization: String,
        developerOrganizationUrl: String,
    ): Unit = with (doc) {
        val originalNodes = project.children().asMap()

        val nameText = originalNodes["name"]?.textContent
            ?: originalNodes["artifactId"]!!.textContent
                .split("-")
                .joinToString(" ") { it.capitalize() }
        val name = newNode("name", nameText)
        val description = newNode("description", (originalNodes["description"] ?: name).textContent)
        val url = newNode("url", projectUrl)
        val inceptionYear = newNode("inceptionYear", projectInceptionYear)
        val licences =
            newNode("licenses").withChildren(
                newNode("license").withChildren(
                    newNode("name", licenseName),
                    newNode("url", licenseUrl),
                    newNode("distribution", licenseDistribution)
                )
            )
        val scm =
            newNode("scm").withChildren(
                newNode("connection", scmConnection),
                newNode("developerConnection", scmDeveloperConnection),
                newNode("url", scmUrl)
            )
        val developers =
            newNode("developers").withChildren(
                newNode("developer").withChildren(
                    newNode("name", developerName),
                    newNode("organization", developerOrganization),
                    newNode("organizationUrl", developerOrganizationUrl),
                )
            )
        val dependencies = originalNodes["dependencies"]
        val nodesToInsert = listOf(
            name, description, url, inceptionYear, licences, scm, developers, dependencies
        ).filterNotNull()
        for (nodeToInsert in nodesToInsert) {
            val originalNode = originalNodes[nodeToInsert.nodeName]
            if (originalNode != null) {
                project.removeChild(originalNode)
            }
            project.appendChild(nodeToInsert)
        }
    }