本篇文章是并发编程网组织的一次Apache Common组件翻译的一部分,因为无意中看到了Apache Common CLI感觉很好奇,因为这个工具很少在网上看到,当然或许我没有关注过。因为我之前也写过类似的CLI工具所以感觉情有独钟吧。所以让我来为大家揭开CLI的神秘面纱。
虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱。各种工具和系统都提供了详尽的使用手册,有些还提供示例说明如何二次开发。然而关于如何开发一个易用、强壮的命令行工具的文章却很少。
简介
构建命令行程序需要三个步骤. 分别是定义, 解析和询问. 下面的章节将轮流介绍每一个阶段,将介绍如何去实现一个CLI .
定义阶段
每一条命令行都必须定义一组参数,它们被用来定义应用程序的接口.
CLI 使用 Options 类类来定义和设置参数, 它是所有 Option 实例的容器. 目前有两种方式来创建 Options in CLI. 一种是通过构造函数,这是最普通也是最为大家所熟知的一种方式;另外一种方法是通过 Options 中定义的工厂方式来实现.
Usage Scenarios 文档提供了实例怎么去创建一个 Options 对象同时也提供了一个真实的示例.
定义阶段的目的是创建一个Options 实例.
解析阶段
在解析阶段中,通过命令行传入应用程序的文本来进行处理. 处理过程将根据在解析器的实现过程中定义的规则来进行.
在 CommandLineParser 类中定义的方法将用 CLI 定义阶段中产生的 Options 实例和一组字符串作为输入,并返回解析后生成的CommandLine.
解析阶段的目的是创建一个CommandLine 实例.
询问阶段
在询问阶段中,应用程序通过查询 CommandLine,并通过其中的布尔参数和提供给应用程序的参数值来决定需要执行哪些程序分支.
这个阶段在用户的代码中实现,CommandLine 中的访问方法为用户代码提供了 CLI 的询问能力.
询问阶段的目的是根据命令行和解析器处理的Options规则与用户的代码相匹配.