我可以区分 org.apache.commons.cli 中的短选项和长选项吗
Can I distinguish short and long options in org.apache.commons.cli
假设我有一个使用 org.apache.commons.cli 包来获取命令行选项的工具。我定义了一个选项
Options opts = new Options();
opts.addOption("v", "version", false, "print tool version information");
因此用户可以使用 -v 或 --version 命令行选项调用我的工具。
问题是,如果用户输入的是 -v 或 --version,我能否在我的代码中判断?
我的想法是将长版本的命令行选项与详细输出相关联,将短版本与非详细输出相关联。因此,如果用户输入 -v,he/she 将获得该工具的版本号,但如果用户键入 --version,he/she 将获得该工具的版本、依赖项的版本以及其他一些版本控制和供应商信息等
两个问题:
- 可以用org.apache.commons.cli有效地完成吗?
- 从用户的角度来看,这是个好主意吗?这是一种常见的做法还是我在这里发明了一些深奥的东西?
对这种方法的实现和理念的经验丰富的想法表示赞赏。
提前致谢
我认为您不会通过这种方式获得该信息,因为命令行被解析为匹配的选项,解析后无法访问实际的命令行。
我会在这里定义两个单独的选项对象,一个用于 'v',一个用于 'version',然后您可以检查两个选项中的哪一个被匹配并相应地采取行动。
假设我有一个使用 org.apache.commons.cli 包来获取命令行选项的工具。我定义了一个选项
Options opts = new Options();
opts.addOption("v", "version", false, "print tool version information");
因此用户可以使用 -v 或 --version 命令行选项调用我的工具。
问题是,如果用户输入的是 -v 或 --version,我能否在我的代码中判断?
我的想法是将长版本的命令行选项与详细输出相关联,将短版本与非详细输出相关联。因此,如果用户输入 -v,he/she 将获得该工具的版本号,但如果用户键入 --version,he/she 将获得该工具的版本、依赖项的版本以及其他一些版本控制和供应商信息等
两个问题:
- 可以用org.apache.commons.cli有效地完成吗?
- 从用户的角度来看,这是个好主意吗?这是一种常见的做法还是我在这里发明了一些深奥的东西?
对这种方法的实现和理念的经验丰富的想法表示赞赏。
提前致谢
我认为您不会通过这种方式获得该信息,因为命令行被解析为匹配的选项,解析后无法访问实际的命令行。
我会在这里定义两个单独的选项对象,一个用于 'v',一个用于 'version',然后您可以检查两个选项中的哪一个被匹配并相应地采取行动。