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 = 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) } }