我对 Apache commons-cli v1.3 有点苦恼,但我还没有找到解决以下问题的实用解决方案:
我有一个命令行工具 - 根据指定的参数 - 创建一个字符串(或从本地文件中读取它),可能对其进行内联编辑,并可选择显示、将所述字符串写入本地文件或通过 HTTP 请求发送它到服务器。
所以我有选项“c”代表“create”,“r”代表“read”,“e”代表“edit”(通过 cli),“d”代表显示,“w”代表“write”,以及“ p”代表“推送到服务器”
显然,一些组合是可能的。例如,应该可以创建此字符串并推送它,而无需从文件读取或写入它。此外,应该可以在不推送的情况下创建和编写,等等......
所以参数的语义是:
("c" OR ("r" ["e"])) ["d" "w" "p"]
显然,当 String 被“c”读取时,它一定不能被“r”读取。当“c”reating 时,我会使用来自 cli-parser 的交互式输入。当“r”阅读时,我想允许用户通过 cli 的交互式输入“e”dit。其余参数是可选的。
下一个:“r”阅读时,需要指定文件名/路径。此外,在“写作”时,这是必要的。无论如何,应该可以指定要读取的文件和要写入的第二个文件。所以文件名会有两个参数,它们都是可选的。
生成的语法如下所示:
tool -cp
tool -rp "filenametoread"
tool -rdwp "filenametoread" "filenametowrite"
tool -cw "filenametowrite"
等等。
我在这里有点迷路了。如何将 commons-cli 配置为具有两个文件名参数,根据指定的参数(选项)需要这些参数?这甚至可能吗?