/*
 * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

project.ext.pomConfig = {
    licenses {
        license {
            name "The Apache Software License, Version 2.0"
            url "http://www.apache.org/licenses/LICENSE-2.0.txt"
            distribution "repo"
        }
    }
    developers {
        developer {
            id "JetBrains"
            name "JetBrains Team"
            organization "JetBrains"
            organizationUrl "http://www.jetbrains.com"
        }
    }

    scm {
        url "https://github.com/Kotlin/kotlinx.serialization"
    }
}

project.ext.configureMavenCentralMetadata = { pom ->
    def root = asNode()
    root.appendNode('name', project.name)
    root.appendNode('description', 'Kotlin multiplatform serialization runtime library')
    root.appendNode('url', 'https://github.com/Kotlin/kotlinx.serialization')
    root.children().last() + pomConfig
}
