From 97bf0618f444c4614a8ea7121184a61eb8b6838b Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Mon, 4 May 2026 17:08:20 +0800 Subject: [PATCH] feat(partnerctl): add details output helper for key-value prompt sections --- .../main/java/work/slhaf/partner/ctl/ui/Prompt.kt | 12 ++++++++++++ PartnerCtl/src/test/java/experimental/PromptDemo.kt | 7 +++++++ 2 files changed, 19 insertions(+) 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")