From d6e1c3c6620cbe912a2980e138c3e66c9d03cd78 Mon Sep 17 00:00:00 2001 From: Peva Blanchard Date: Fri, 26 Jan 2024 10:48:06 +0100 Subject: [PATCH] cli: data path option --- .../kotlin/ch/kleis/lcaac/cli/cmd/AssessCommand.kt | 13 +++++++------ .../kotlin/ch/kleis/lcaac/cli/cmd/TestCommand.kt | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/AssessCommand.kt b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/AssessCommand.kt index 920036e4..63bed036 100644 --- a/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/AssessCommand.kt +++ b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/AssessCommand.kt @@ -10,10 +10,7 @@ import ch.kleis.lcaac.grammar.LoaderOption import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.help -import com.github.ajalt.clikt.parameters.options.associate -import com.github.ajalt.clikt.parameters.options.default -import com.github.ajalt.clikt.parameters.options.help -import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.options.* import com.github.ajalt.clikt.parameters.types.file import java.io.File @@ -27,7 +24,11 @@ class AssessCommand : CliktCommand(name = "assess", help = "Returns the unitary Example: lcaac assess -l model="ABC" -l geo="FR". """.trimIndent()) .associate() - val path: File by option("-p", "--path").file(canBeFile = false).default(File(".")).help("Path to root folder.") + private val getPath = option("-p", "--path").file(canBeFile = false).default(File(".")).help("Path to root folder.") + val path: File by getPath + val dataSourcePath: File by option("--data-path").file(canBeFile = false) + .defaultLazy { getPath.value } + .help("Path to data folder. Default to root folder.") val file: File? by option("-f", "--file").file(canBeDir = false) .help(""" CSV file with parameter values. @@ -44,7 +45,7 @@ class AssessCommand : CliktCommand(name = "assess", help = "Returns the unitary override fun run() { val files = lcaFiles(path) val symbolTable = Loader(BasicOperations).load(files, listOf(LoaderOption.WITH_PRELUDE)) - val processor = CsvProcessor(path, symbolTable) + val processor = CsvProcessor(dataSourcePath, symbolTable) val iterator = loadRequests() val writer = CsvResultWriter() var first = true diff --git a/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/TestCommand.kt b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/TestCommand.kt index 59d483c6..6693e592 100644 --- a/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/TestCommand.kt +++ b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/TestCommand.kt @@ -12,10 +12,7 @@ import ch.kleis.lcaac.grammar.LoaderOption import ch.kleis.lcaac.grammar.parser.LcaLangParser import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.ProgramResult -import com.github.ajalt.clikt.parameters.options.default -import com.github.ajalt.clikt.parameters.options.flag -import com.github.ajalt.clikt.parameters.options.help -import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.options.* import com.github.ajalt.clikt.parameters.types.file import java.io.File @@ -23,7 +20,11 @@ private const val greenTick = "\u2705" private const val redCross = "\u274C" class TestCommand : CliktCommand(name = "test", help = "Run specified tests") { - val path: File by option("-p", "--path").file(canBeFile = false).default(File(".")).help("Path to root folder.") + private val getPath = option("-p", "--path").file(canBeFile = false).default(File(".")).help("Path to root folder.") + val path: File by getPath + val dataSourcePath: File by option("--data-path").file(canBeFile = false) + .defaultLazy { getPath.value } + .help("Path to data folder. Default to root folder.") val file: File? by option("-f", "--file").file(canBeDir = false) .help(""" CSV file with parameter values. @@ -41,7 +42,7 @@ class TestCommand : CliktCommand(name = "test", help = "Run specified tests") { .map { mapper.test(it) } val runner = BasicTestRunner( symbolTable, - CsvSourceOperations(path, ops)) + CsvSourceOperations(dataSourcePath, ops)) val results = cases.map { runner.run(it) } results.forEach { result ->