diff --git a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYaml.kt b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYaml.kt index f88db5bf..b11d5300 100644 --- a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYaml.kt +++ b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYaml.kt @@ -6,10 +6,9 @@ import io.github.cdsap.projectgenerator.model.Versions import java.io.File class GenerateVersionsYaml { - fun generate() { - val file = File("versions.yaml") - file.writeText(render()) - if (file.exists()) println("file versions.yaml created ") + fun generate(outputFile: File = File("versions.yaml")) { + outputFile.writeText(render()) + if (outputFile.exists()) println("file ${outputFile.name} created ") } internal fun render(versions: Versions = Versions(), gradle: Gradle = Gradle.latest()): String { diff --git a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/Main.kt b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/Main.kt index 4c85fbb9..6dbb04a9 100644 --- a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/Main.kt +++ b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/Main.kt @@ -9,6 +9,7 @@ import com.github.ajalt.clikt.parameters.types.choice import com.github.ajalt.clikt.parameters.types.file import com.github.ajalt.clikt.parameters.types.int import io.github.cdsap.projectgenerator.model.* +import java.io.File fun main(args: Array) { ProjectReportCli() @@ -89,6 +90,6 @@ class GenerateProjects : CliktCommand(name = "generate-project") { class GenerateYaml : CliktCommand(name = "generate-yaml-versions") { override fun run() { - GenerateVersionsYaml().generate() + GenerateVersionsYaml().generate(File("versions.yaml")) } } diff --git a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYamlTest.kt b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYamlTest.kt index 480a3a26..bf1d78b2 100644 --- a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYamlTest.kt +++ b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateVersionsYamlTest.kt @@ -2,11 +2,18 @@ package io.github.cdsap.projectgenerator.cli import io.github.cdsap.projectgenerator.model.Gradle import io.github.cdsap.projectgenerator.model.Versions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test +import org.junit.jupiter.api.io.TempDir +import java.io.File +import java.nio.file.Path class GenerateVersionsYamlTest { + @TempDir + lateinit var tempDir: Path + @Test fun `render includes key defaults and plugin sections`() { val versions = Versions() @@ -34,4 +41,15 @@ class GenerateVersionsYamlTest { assertTrue(yaml.contains("id: ${rootPlugin.id}")) assertTrue(yaml.contains("version: ${rootPlugin.version}")) } + + @Test + fun `generate writes rendered yaml to explicit output file`() { + val outputFile = File(tempDir.toFile(), "versions.yaml") + val generator = GenerateVersionsYaml() + + generator.generate(outputFile) + + assertTrue(outputFile.exists()) + assertEquals(generator.render(), outputFile.readText()) + } }