libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 11b48501f8ac52d41510b79c893f5c2af075f07a
parent 4edb7a093380f3909096141a8ac158f5bce0309e
Author: MS <ms@taler.net>
Date:   Tue, 19 Jan 2021 18:49:56 +0100

Version file and Sandbox version option

Diffstat:
Mbuild.gradle | 9+++++++++
Msandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt | 29++++++++++++++++++++++-------
Mutil/src/main/kotlin/Config.kt | 6++++++
3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/build.gradle b/build.gradle @@ -24,7 +24,16 @@ idea { setVersion("0.0.1-dev.1") +task versionFiles() { + new File("util/src/main/resources/version.txt").text = getRootProject().version +} + +classes { + dependsOn versionFiles +} + task dist(type: Zip) { + dependsOn versionFiles evaluationDependsOn("nexus") evaluationDependsOn("sandbox") def topDir = "${getRootProject().name}-${getRootProject().version}" diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt @@ -60,6 +60,7 @@ import com.github.ajalt.clikt.core.context import com.github.ajalt.clikt.core.subcommands import com.github.ajalt.clikt.output.CliktHelpFormatter import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.types.int import execThrowableOrTerminate @@ -80,6 +81,7 @@ import tech.libeufin.util.ebics_h004.EbicsResponse import tech.libeufin.util.ebics_h004.EbicsTypes import java.util.* import kotlin.random.Random +import kotlin.system.exitProcess const val DEFAULT_DB_CONNECTION = "jdbc:sqlite:/tmp/libeufin-sandbox.sqlite3" @@ -95,10 +97,6 @@ data class SandboxError(val statusCode: HttpStatusCode, val reason: String) : Ex data class SandboxErrorJson(val error: SandboxErrorDetailJson) data class SandboxErrorDetailJson(val type: String, val description: String) -class SandboxCommand : CliktCommand() { - override fun run() = Unit -} - class ResetTables : CliktCommand("Drop all the tables from the database") { init { context { @@ -193,10 +191,27 @@ fun ensureNonNull(param: String?): String { ) } +class SandboxCommand : CliktCommand(invokeWithoutSubcommand = true, printHelpOnEmptyArgs = true) { + init { + context { + helpFormatter = CliktHelpFormatter(showDefaultValues = true) + } + } + private val version by option().flag() + override fun run() { + if (version) { + println(getVersion()) + exitProcess(0) + } + if (currentContext.invokedSubcommand == null) { + println("Caught you: no command was run") + } + } +} + + fun main(args: Array<String>) { - SandboxCommand() - .subcommands(Serve(), ResetTables()) - .main(args) + SandboxCommand().subcommands(Serve(), ResetTables()).main(args) } fun serverMain(dbName: String, port: Int) { diff --git a/util/src/main/kotlin/Config.kt b/util/src/main/kotlin/Config.kt @@ -6,6 +6,12 @@ import ch.qos.logback.classic.util.ContextInitializer import ch.qos.logback.core.util.Loader import org.slf4j.LoggerFactory +fun getVersion(): String { + return Loader.getResource( + "version.txt", ClassLoader.getSystemClassLoader() + ).readText() +} + /** * Set system properties to wanted values, and load logback configuration after. * While it can set any system property, it is used only to set the log file name.