From 372770318b097ec3552acf0087bb9b43da802b72 Mon Sep 17 00:00:00 2001 From: nroulon Date: Tue, 2 May 2023 18:10:05 +0200 Subject: [PATCH] feat: #195 move verbose and trace argument to App --- .../main/kotlin/datamaintain/cli/app/App.kt | 15 +++++- .../app/update/db/MarkOneScriptAsExecuted.kt | 12 ----- .../cli/app/update/db/UpdateDb.kt | 12 ----- .../datamaintain/cli/app/PrintConfigTest.kt | 33 +++++++----- .../update/db/MarkOneScriptAsExecutedTest.kt | 26 +++++----- .../cli/app/update/db/UpdateDbTest.kt | 50 ++++++++++--------- .../test/kotlin/datamaintain/test/MongoIT.kt | 30 +++++++++-- 7 files changed, 99 insertions(+), 79 deletions(-) diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/App.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/App.kt index 15e60703..6e0b7349 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/App.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/App.kt @@ -28,7 +28,7 @@ class App : CliktCommand() { val message = "datamaintain version $version" registerOption( EagerOption( - names = setOf("--version", "--v", "-v", "-version"), + names = setOf("--version", "--V", "-V", "-version"), nvalues = 0, help = "Show the version and exit", hidden = false, @@ -70,6 +70,16 @@ class App : CliktCommand() { defaultValue = MongoConfigKey.DB_MONGO_TMP_PATH.default ) + private val verbose: Boolean? by detailedOption("--verbose", "-v", + help = "verbose", + defaultValue = CliSpecificKey.VERBOSE.default + ).flag() + + private val trace: Boolean? by detailedOption("-vv", + help = "trace is more verbose than verbose", + defaultValue = CliSpecificKey.VERBOSE.default + ).flag() + private val config: Boolean? by option(help = "Print the configuration without executing the subcommand").flag() private val props by findObject { Properties() } @@ -102,6 +112,9 @@ class App : CliktCommand() { trustUri?.let { props.put(DriverConfigKey.DB_TRUST_URI.key, it.toString()) } config?.let { props.put(CliSpecificKey.__PRINT_CONFIG_ONLY.key, it.toString()) } + + verbose?.let { props.put(CliSpecificKey.VERBOSE.key, it.toString()) } + trace?.let { props.put(CliSpecificKey.TRACE.key, it.toString()) } } } diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt index 62f55cf3..7126712a 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt @@ -20,22 +20,10 @@ class MarkOneScriptAsExecuted(runner: (DatamaintainConfig, Boolean) -> Unit = :: defaultValue = CoreConfigKey.SCAN_PATH.default ) - private val verbose: Boolean? by detailedOption("--verbose", "-v", - help = "verbose", - defaultValue = CliSpecificKey.VERBOSE.default - ).flag() - - private val trace: Boolean? by detailedOption("-vv", - help = "trace is more verbose than verbose", - defaultValue = CliSpecificKey.VERBOSE.default - ).flag() - override fun overloadProps(props: Properties) { props[CoreConfigKey.DEFAULT_SCRIPT_ACTION.key] = ScriptAction.MARK_AS_EXECUTED.name // Overload from arguments path?.let { props.put(CoreConfigKey.SCAN_PATH.key, it) } - verbose?.let { props.put(CliSpecificKey.VERBOSE.key, it.toString()) } - trace?.let { props.put(CliSpecificKey.TRACE.key, it.toString()) } } } diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt index aa3df6de..662dd3b0 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt @@ -68,16 +68,6 @@ class UpdateDb(runner: (DatamaintainConfig, Boolean) -> Unit = ::defaultUpdateDb defaultValue = CoreConfigKey.PRUNE_OVERRIDE_UPDATED_SCRIPTS.default ).flag() - private val verbose: Boolean? by detailedOption("--verbose", "-v", - help = "verbose", - defaultValue = CliSpecificKey.VERBOSE.default - ).flag() - - private val trace: Boolean? by detailedOption("-vv", - help = "trace is more verbose than verbose", - defaultValue = CliSpecificKey.VERBOSE.default - ).flag() - private val saveDbOutput: Boolean? by detailedOption( help = "save your script and db output", defaultValue = DriverConfigKey.DB_SAVE_OUTPUT.default @@ -137,8 +127,6 @@ class UpdateDb(runner: (DatamaintainConfig, Boolean) -> Unit = ::defaultUpdateDb blacklistedTags?.let { props.put(CoreConfigKey.TAGS_BLACKLISTED.key, it) } tagsToPlayAgain?.let { props.put(CoreConfigKey.PRUNE_TAGS_TO_RUN_AGAIN.key, it) } createTagsFromFolder?.let { props.put(CoreConfigKey.CREATE_TAGS_FROM_FOLDER.key, it.toString()) } - verbose?.let { props.put(CliSpecificKey.VERBOSE.key, it.toString()) } - trace?.let { props.put(CliSpecificKey.TRACE.key, it.toString()) } saveDbOutput?.let { props.put(DriverConfigKey.DB_SAVE_OUTPUT.key, it.toString()) } printDbOutput?.let { props.put(DriverConfigKey.DB_PRINT_OUTPUT.key, it.toString()) } executionMode?.let { props.put(CoreConfigKey.EXECUTION_MODE.key, it) } diff --git a/modules/cli/src/test/kotlin/datamaintain/cli/app/PrintConfigTest.kt b/modules/cli/src/test/kotlin/datamaintain/cli/app/PrintConfigTest.kt index a198ba82..8b67a2b2 100644 --- a/modules/cli/src/test/kotlin/datamaintain/cli/app/PrintConfigTest.kt +++ b/modules/cli/src/test/kotlin/datamaintain/cli/app/PrintConfigTest.kt @@ -100,6 +100,15 @@ internal class PrintConfigTest : BaseCliTest() { // Given val path = "/myPath" + val baseArguments = listOf( + "--verbose", + "--config", + "--db-type", + "mongo", + "--db-uri", + "mongo-uri" + ) + val updateDbArguments = listOf( "--path", path, @@ -110,16 +119,11 @@ internal class PrintConfigTest : BaseCliTest() { "--tag", "MYTAG2=/pathMatcher2", "--blacklisted-tags", "MYTAG1", "--whitelisted-tags", "MYTAG2", - "--verbose", "--porcelain" ) // When - runAppWithUpdateDb( - listOf( - "--config", "--db-type", "mongo", "--db-uri", "mongo-uri" - ), updateDbArguments - ) + runAppWithUpdateDb(baseArguments, updateDbArguments) // Then var index = 0 @@ -146,6 +150,16 @@ internal class PrintConfigTest : BaseCliTest() { // Given val path = "/myPath" + val baseArguments = listOf( + "--verbose", + "--config", + "--db-type", + "mongo", + "--db-uri", + "mongo-uri", + "--config-file-path", + "src/test/resources/config-child.properties" + ) val updateDbArguments = listOf( "--path", path, @@ -155,16 +169,11 @@ internal class PrintConfigTest : BaseCliTest() { "--tag", "MYTAG1=/pathMatcher1", "--blacklisted-tags", "MYTAG1", "--whitelisted-tags", "MYTAG2", - "--verbose", "--porcelain" ) // When - runAppWithUpdateDb( - listOf( - "--config", "--db-type", "mongo", "--db-uri", "mongo-uri", "--config-file-path", "src/test/resources/config-child.properties" - ), updateDbArguments - ) + runAppWithUpdateDb(baseArguments, updateDbArguments) // Then var index = 0 diff --git a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt index ecd15cea..54b21ef4 100644 --- a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt +++ b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt @@ -30,7 +30,7 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() { ) // When - runMarkScriptAsExecuted(markScriptAsExecutedArguments) + runMarkScriptAsExecuted(markScriptAsExecutedArguments = markScriptAsExecutedArguments) // Then expectThat(configWrapper.datamaintainConfig!!.scanner.path).isEqualTo(Paths.get(path)) @@ -58,10 +58,10 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() { @Test fun `should build config with verbose set to true`() { // Given - val markScriptAsExecutedArguments = listOf("--verbose") + val baseArguments = listOf("--verbose") // When - runMarkScriptAsExecuted(markScriptAsExecutedArguments) + runMarkScriptAsExecuted(baseArguments) // Then expectThat(datamaintainLogger.level).isEqualTo(Level.DEBUG) @@ -81,10 +81,10 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() { @Test fun `should build config with trace set to true`() { // Given - val markScriptAsExecutedArguments = listOf("-vv") + val baseArguments = listOf("-vv") // When - runMarkScriptAsExecuted(markScriptAsExecutedArguments) + runMarkScriptAsExecuted(baseArguments) // Then expectThat(datamaintainLogger.level).isEqualTo(Level.TRACE) @@ -93,10 +93,10 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() { @Test fun `should build config with trace set to true even if verbose is set`() { // Given - val markScriptAsExecutedArguments = listOf("--verbose", "-vv") + val baseArguments = listOf("--verbose", "-vv") // When - runMarkScriptAsExecuted(markScriptAsExecutedArguments) + runMarkScriptAsExecuted(baseArguments) // Then expectThat(datamaintainLogger.level).isEqualTo(Level.TRACE) @@ -116,13 +116,13 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() { } } - private fun runMarkScriptAsExecuted(markScriptAsExecutedArguments: List = listOf()) { - runAppWithMarkOneScriptAsExecuted( - listOf( - "--db-type", "mongo", - "--db-uri", "mongo-uri" - ), markScriptAsExecutedArguments + private fun runMarkScriptAsExecuted(baseArguments: List = listOf(), markScriptAsExecutedArguments: List = listOf()) { + val base = baseArguments + listOf( + "--db-type", "mongo", + "--db-uri", "mongo-uri" ) + + runAppWithMarkOneScriptAsExecuted(base, markScriptAsExecutedArguments) } } diff --git a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt index a321bc37..fd253a72 100644 --- a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt +++ b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt @@ -17,7 +17,6 @@ import org.slf4j.LoggerFactory import strikt.api.expectThat import strikt.assertions.* import java.nio.file.Paths -import kotlin.reflect.KProperty1 internal class UpdateDbTest : BaseCliTest() { @Nested @@ -34,7 +33,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.scanner.path).isEqualTo(Paths.get(path)) @@ -50,7 +49,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.scanner.identifierRegex.pattern).isEqualTo(identifierRegex) @@ -70,7 +69,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.executor.executionMode).isEqualTo(executionMode) @@ -122,10 +121,10 @@ internal class UpdateDbTest : BaseCliTest() { @Test fun `should build config with trace set to true`() { // Given - val updateDbArguments = listOf("-vv") + val baseArguments = listOf("-vv") // When - runUpdateDb(updateDbArguments) + runUpdateDb(baseArguments) // Then expectThat(datamaintainLogger.level).isEqualTo(Level.TRACE) @@ -134,10 +133,10 @@ internal class UpdateDbTest : BaseCliTest() { @Test fun `should build config with trace set to true even if verbose is set`() { // Given - val updateDbArguments = listOf("--verbose", "-vv") + val baseArguments = listOf("--verbose", "-vv") // When - runUpdateDb(updateDbArguments) + runUpdateDb(baseArguments) // Then expectThat(datamaintainLogger.level).isEqualTo(Level.TRACE) @@ -152,7 +151,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--create-tags-from-folder") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.scanner.doesCreateTagsFromFolder).isTrue() @@ -184,7 +183,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.scanner.tagsMatchers) @@ -221,7 +220,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then val tags = when (tagsToTest) { @@ -248,7 +247,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper) { @@ -270,7 +269,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper) { @@ -308,7 +307,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--allow-auto-override") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper) { @@ -359,7 +358,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--porcelain") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper) { get { datamaintainConfig }.isNotNull() } @@ -378,7 +377,7 @@ internal class UpdateDbTest : BaseCliTest() { ) // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.executor.defaultScriptAction).isEqualTo(scriptAction) @@ -395,7 +394,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--save-db-output") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat((configWrapper.datamaintainConfig!!.driverConfig) as MongoDriverConfig) @@ -425,7 +424,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--print-db-output") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat((configWrapper.datamaintainConfig!!.driverConfig) as MongoDriverConfig) @@ -455,7 +454,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--mongo-shell").plus("mongo") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat((configWrapper.datamaintainConfig!!.driverConfig) as MongoDriverConfig) @@ -471,7 +470,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--mongo-shell").plus("mongosh") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat((configWrapper.datamaintainConfig!!.driverConfig) as MongoDriverConfig) @@ -491,7 +490,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--flags=MY_TEST_FLAG") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.executor.flags) { @@ -505,7 +504,7 @@ internal class UpdateDbTest : BaseCliTest() { val updateDbArguments = listOf("--flags=MY_TEST_FLAG1,MY_TEST_FLAG2") // When - runUpdateDb(updateDbArguments) + runUpdateDb(updateDbArguments = updateDbArguments) // Then expectThat(configWrapper.datamaintainConfig!!.executor.flags) { @@ -515,7 +514,10 @@ internal class UpdateDbTest : BaseCliTest() { } } - private fun runUpdateDb(updateDbArguments: List = listOf()) { - runAppWithUpdateDb(listOf("--db-type", "mongo", "--db-uri", "mongo-uri"), updateDbArguments) + private fun runUpdateDb(baseArguments: List = listOf(), updateDbArguments: List = listOf()) { + runAppWithUpdateDb( + listOf("--db-type", "mongo", "--db-uri", "mongo-uri") + baseArguments, + updateDbArguments + ) } } diff --git a/modules/test/src/test/kotlin/datamaintain/test/MongoIT.kt b/modules/test/src/test/kotlin/datamaintain/test/MongoIT.kt index 2ad5128e..ebe516ce 100644 --- a/modules/test/src/test/kotlin/datamaintain/test/MongoIT.kt +++ b/modules/test/src/test/kotlin/datamaintain/test/MongoIT.kt @@ -20,9 +20,13 @@ class MongoIT : AbstractMongoDbTest() { // When executeUpdateDbWithMongoClientInDocker( - arrayOf("--db-type", "mongo"), + arrayOf( + "--db-type", "mongo", + "--db-uri", mongoUri(), + ), arrayOf( "--verbose", + "update-db", "--path", "src/test/resources/integration/ok", "--identifier-regex", "(.*?)_.*", "--print-db-output", @@ -46,9 +50,13 @@ class MongoIT : AbstractMongoDbTest() { fun `should partial execute`() { // Given executeUpdateDbWithMongoClientInDocker( - arrayOf("--db-type", "mongo"), + arrayOf( + "--db-type", "mongo", + "--db-uri", mongoUri(), + ), arrayOf( "--verbose", + "update-db", "--path", "src/test/resources/integration/partial", "--identifier-regex", "(.*?)_.*" ) @@ -59,7 +67,10 @@ class MongoIT : AbstractMongoDbTest() { // When executeUpdateDbWithMongoClientInDocker( - arrayOf("--db-type", "mongo"), + arrayOf( + "--db-type", "mongo", + "--db-uri", mongoUri(), + ), arrayOf( "--verbose", "--path", "src/test/resources/integration/ok", @@ -104,9 +115,13 @@ class MongoIT : AbstractMongoDbTest() { // When executeUpdateDbWithMongoClientInDocker( - arrayOf("--db-type", "mongo"), + arrayOf( + "--db-type", "mongo", + "--db-uri", mongoUri(), + ), arrayOf( "--verbose", + "update-db", "--path", "src/test/resources/integration/ok", "--identifier-regex", "(.*?)_.*", "--execution-mode", "NORMAL", @@ -130,9 +145,13 @@ class MongoIT : AbstractMongoDbTest() { fun `should override`() { // Given executeUpdateDbWithMongoClientInDocker( - arrayOf("--db-type", "mongo"), + arrayOf( + "--db-type", "mongo", + "--db-uri", mongoUri(), + ), arrayOf( "--verbose", + "update-db", "--path", "src/test/resources/integration/partial", "--identifier-regex", "(.*?)_.*" ) @@ -172,6 +191,7 @@ class MongoIT : AbstractMongoDbTest() { val args = listOf( "--db-type", "mongo", "--db-uri", mongoUri, + "--verbose", "update-db", "--mongo-client", mongoCliDockerPath.toString(), "--verbose",