gpt4 book ai didi

java - 在运行时启用或禁用选项

转载 作者:行者123 更新时间:2023-12-02 01:42:19 25 4
gpt4 key购买 nike

我正在尝试使用 Picocli 制作一个交互式 cli,并希望在完成某个操作/要求后显示一些选项。有没有一种方法可以在不使用 CommandSpec 的情况下做到这一点?

之前显示的选项

@Option(names = {"-c","--chooseDevice"}, description = {"Choose Devices"})
private boolean chooseDevice;

--
some code that will initialize a device
--

之后显示的选项

@Options(names = {,"-d", "--deviceCommand", description = "some device command")
private boolean deviceCommand;

输出应该是

//before choosing device
-c --chooseDevice "Choose Devices"

//after choosing device
-c --chooseDevice "Choose Devices"
-d --deviceCommand "some device command"

最佳答案

可以在运行时更改选项的hidden属性,但它确实需要使用编程API(如CommandSpec类)。

Picocli 4.0 添加了从 CommandSpec 中删除选项的功能,因此您可以将其替换为具有不同 hidden 属性值的选项副本。

类似这样的事情:

CommandLine cmd = new CommandLine(new MyApp());

// replace the old "--device" option with a different one that is not hidden
CommandSpec spec = cmd.getCommandSpec();
OptionSpec old = spec.findOption("--device");
OptionSpec newDeviceOption = OptionSpec.builder(old).hidden(false).build();
spec.remove(old);
spec.add(newDeviceOption);

cmd.execute(args);

请参阅GitHub issue #736更多细节。

关于java - 在运行时启用或禁用选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com