28 lines
960 B
Kotlin
28 lines
960 B
Kotlin
package starter.templates
|
|
|
|
import com.mitchellbosecke.pebble.PebbleEngine
|
|
import starter.Project
|
|
import starter.Version
|
|
import starter.utils.prettyPrintXml
|
|
import starter.utils.render
|
|
|
|
class PomTemplate(private val engine: PebbleEngine) : Template {
|
|
override fun path(project: Project) = "pom.xml"
|
|
|
|
override fun render(project: Project): String {
|
|
val args: MutableMap<String, Any?> = mutableMapOf(
|
|
"dependencies" to project.dependencies.sortedBy { it.scope },
|
|
"repositories" to project.repositories,
|
|
"kotlinxSerialization" to project.dependencies.any { it.name == "Kotlinx-serialization" },
|
|
"versions" to project.dependencies.map { Version(name = it.versionKey, value = it.version) }.toSet()
|
|
)
|
|
|
|
project.inputs.forEach {
|
|
args[it.name] = it.value
|
|
}
|
|
|
|
val rendered = engine.render("starter/pom/index", args)
|
|
return prettyPrintXml(rendered)
|
|
}
|
|
}
|