Skip to content

Commit

Permalink
feat: #195 move verbose and trace argument to App
Browse files Browse the repository at this point in the history
  • Loading branch information
nroulon committed Jun 13, 2023
1 parent cea6c46 commit 3727703
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 79 deletions.
15 changes: 14 additions & 1 deletion modules/cli/src/main/kotlin/datamaintain/cli/app/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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() }
Expand Down Expand Up @@ -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()) }
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) }
Expand Down
33 changes: 21 additions & 12 deletions modules/cli/src/test/kotlin/datamaintain/cli/app/PrintConfigTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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
Expand All @@ -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,
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() {
)

// When
runMarkScriptAsExecuted(markScriptAsExecutedArguments)
runMarkScriptAsExecuted(markScriptAsExecutedArguments = markScriptAsExecutedArguments)

// Then
expectThat(configWrapper.datamaintainConfig!!.scanner.path).isEqualTo(Paths.get(path))
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -116,13 +116,13 @@ internal class MarkOneScriptAsExecutedTest : BaseCliTest() {
}
}

private fun runMarkScriptAsExecuted(markScriptAsExecutedArguments: List<String> = listOf()) {
runAppWithMarkOneScriptAsExecuted(
listOf(
"--db-type", "mongo",
"--db-uri", "mongo-uri"
), markScriptAsExecutedArguments
private fun runMarkScriptAsExecuted(baseArguments: List<String> = listOf(), markScriptAsExecutedArguments: List<String> = listOf()) {
val base = baseArguments + listOf(
"--db-type", "mongo",
"--db-uri", "mongo-uri"
)

runAppWithMarkOneScriptAsExecuted(base, markScriptAsExecutedArguments)
}
}

Loading

0 comments on commit 3727703

Please sign in to comment.