From 7bee14452e4310f4f7a17cbf403aa358400c6c61 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Wed, 6 May 2026 15:06:20 +0800 Subject: [PATCH] feat(partnerctl): add shared help option mixin across commands --- .../work/slhaf/partner/ctl/commands/ChatCommand.kt | 3 +++ .../work/slhaf/partner/ctl/commands/ConfigCommand.kt | 4 ++++ .../work/slhaf/partner/ctl/commands/HelpOptions.kt | 12 ++++++++++++ .../work/slhaf/partner/ctl/commands/InitCommand.kt | 3 +++ .../work/slhaf/partner/ctl/commands/LogCommand.kt | 3 +++ .../work/slhaf/partner/ctl/commands/ModuleCommand.kt | 4 ++++ .../work/slhaf/partner/ctl/commands/RunCommand.kt | 3 +++ .../slhaf/partner/ctl/commands/ShutdownCommand.kt | 3 +++ 8 files changed, 35 insertions(+) create mode 100644 PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/HelpOptions.kt diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ChatCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ChatCommand.kt index 6f663a5a..b7224c88 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ChatCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ChatCommand.kt @@ -14,6 +14,9 @@ import picocli.CommandLine ) class ChatCommand : Runnable { + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + override fun run() { val terminal = createTerminal() val reader = LineReaderBuilder.builder() diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ConfigCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ConfigCommand.kt index f7cdcfa2..8d3a1eac 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ConfigCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ConfigCommand.kt @@ -8,6 +8,10 @@ import picocli.CommandLine description = [$$"${bundle:cli.config.description}"], ) class ConfigCommand : Runnable{ + + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + override fun run() { TODO("Not yet implemented") } diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/HelpOptions.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/HelpOptions.kt new file mode 100644 index 00000000..46a572ac --- /dev/null +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/HelpOptions.kt @@ -0,0 +1,12 @@ +package work.slhaf.partner.ctl.commands + +import picocli.CommandLine + +class HelpOptions { + @CommandLine.Option( + names = ["-h", "--help"], + usageHelp = true, + descriptionKey = "cli.option.help.description", + ) + var help: Boolean = false +} diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/InitCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/InitCommand.kt index 7f4ea86c..3abbf920 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/InitCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/InitCommand.kt @@ -27,6 +27,9 @@ import java.nio.file.Paths ) class InitCommand : Runnable { + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + lateinit var home: Path /** diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/LogCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/LogCommand.kt index 78e4f75f..5b326453 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/LogCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/LogCommand.kt @@ -14,6 +14,9 @@ import java.nio.file.Path ) class LogCommand : Runnable { + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + @CommandLine.Option( names = ["--tail"], descriptionKey = "cli.log.option.tail.description", diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ModuleCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ModuleCommand.kt index fbcd0c07..aa23f40d 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ModuleCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ModuleCommand.kt @@ -8,6 +8,10 @@ import picocli.CommandLine description = [$$"${bundle:cli.module.description}"], ) class ModuleCommand : Runnable{ + + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + override fun run() { TODO("Not yet implemented") } diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/RunCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/RunCommand.kt index 1d3647a5..5cdbc7ed 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/RunCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/RunCommand.kt @@ -17,6 +17,9 @@ import java.time.LocalDateTime ) class RunCommand : Runnable { + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + @CommandLine.Option( names = ["-d", "--background"], descriptionKey = "cli.run.option.background.description", diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ShutdownCommand.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ShutdownCommand.kt index db97f271..e17d879f 100644 --- a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ShutdownCommand.kt +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/commands/ShutdownCommand.kt @@ -12,6 +12,9 @@ import work.slhaf.partner.ctl.support.CommandInterrupted ) class ShutdownCommand : Runnable { + @CommandLine.Mixin + lateinit var helpOptions: HelpOptions + @CommandLine.Option( names = ["--timeout"], descriptionKey = "cli.shutdown.option.timeout.description"