diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/ui/Prompt.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/ui/Prompt.kt index 925e67c6..cb9135ae 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/ui/Prompt.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/ui/Prompt.kt @@ -49,6 +49,18 @@ class Prompt private constructor( fun info(message: String) = println("[info] $message") + fun details(title: String? = null, items: List>) { + if (items.isEmpty()) return + + if (!title.isNullOrBlank()) { + println(title) + } + + items.forEach { (key, value) -> + println(" $key: $value") + } + } + fun success(message: String) = println("[ok] $message") fun warn(message: String) = println("[warn] $message") diff --git a/PartnerCtl/src/test/java/experimental/PromptDemo.kt b/PartnerCtl/src/test/java/experimental/PromptDemo.kt index 5d274ea4..9213a840 100644 --- a/PartnerCtl/src/test/java/experimental/PromptDemo.kt +++ b/PartnerCtl/src/test/java/experimental/PromptDemo.kt @@ -59,6 +59,13 @@ fun main() { } prompt.info("Port = $port") + prompt.details( + "Test Details", listOf( + "Tag A" to "Detail A", + "Tag B" to "Detail B" + ) + ) + prompt.section("Confirm") val confirmed = prompt.confirm("Continue?", defaultValue = true) prompt.info("Continue = $confirmed")