快速命令行界面

什么是快速 CLI?

快速 CLI 是在 Java 中创建命令行程序的最快方法。它是一个基于开源注释的框架,用于创建shell程序。它使应用程序开发人员能够构建命令行工具,而无需编写样板代码。它非常简单易学。

以下是快速功能:

  1. 它支持 Linux 风格的参数和选项。
  2. 它是基于注释的。您只需要在方法级别使用四个注释。
  3. 它根据用户提供的注释描述生成帮助文本
  4. 默认情况下,它会附加“帮助”和“退出”命令。
  5. 以表格/列格式打印信息,具有灵活的对齐和换行功能。
  6. 根据方法参数类型自动转换类型

支持的语法

    CommandName [Options]...   [Option-Flags]...   [Arguments]...

哪里

  1. 期权是键值对,例如--opt1=theOptValue
  2. 选项-标志是布尔标志,例如 等。它们可以组合在一起作为-f-t-c-ftc
  3. 参数是命令的输入,例如考虑linux命令,这里的文件名是命令的参数ls -l folderNamels

hello world 例子

  1. 第 1 步: 从 IDE 或使用原型创建 maven 项目,并添加快速 CLI 依赖项:
  2. 第 2 步:创建方法,该方法将定义命令并在执行命令时被调用
<dependency>
    <groupId>com.logicbig.cli</groupId>
    <artifactId>quick-cli</artifactId>
    <version>1.0</version>
</dependency>

3.第 3 步: 扫描类并启动外壳。

public class CommandHandler {
    @Command(name = "sayHi", desc = "Test command")
    public void sayHiCommand(@Argument(name = "userName", desc = "user name",
            mandatory = true) String user) {
        System.out.println("Hi there! " + user);
    }
}


就是这样。现在从命令行运行您的主方法。
运行命令“sayHi” 运行“帮助”命令 运行“exit”
命令以终止外壳。

    ---------------------------------------------------------------------------
    Hello World
    An example shell prgoram
    ---------------------------------------------------------------------------
    Valid Commands: [sayHi, help, exit]
    Please use 'help' command to view details
    Hello World>_
Hello World>sayHi Mike
Hi there! Mike
Hello World>_
    Hello World>help
  ---------------------------------------------------------------------------
  sayHi  Description  Test command
               Usage  sayHi <userName>
           Argument:
            userName  user name(Mandatory)

   help  Description  prints help
               Usage  help [<command>]
           Argument:
             command  The command name

   exit  Description  terminates shell
               Usage  exit

  ---------------------------------------------------------------------------
  Please use double quotes for argument and option values if they contain non alphabetical characters
  Option Flags can be combined together e.g. -a -b -c can be combined as -abc
  Options must start with double hyphen e.g. --details=value




快速 CLI 注释

让我们考虑以下 linux 命令作为示例ls

ls --color=auto -v myDir

相应的注释用法和方法声明:

@Command(name = "ls", desc = "List information about the FILEs")
public void listCommand(
     @Option(name = "color", desc = "colorize the output") String color,
     @OptionFlag(name = 'v', desc = "natural sort of (version) numbers within text") boolean vFlag,
     @Argument(name = "dirName", desc = "The directory, by default current directoy") String dir) {

    //apply list logic here 
    }

我们不打算实现上述命令的逻辑。我们只是设置了注释。我们需要用于快速CLI的所有注释都在包中定义 com.logicbig.cli.annotation

以下是我们上面使用的快速 CLI 注释的细分。

命令部分

快速 CLI 注释

解释

ls

Command

Command应在方法级别进行注释。在此示例中,name 参数应为: 以及合适的name="ls"desc

--color=auto

Option

Option应在方法参数上注释。在这种情况下,参数的类型应为字符串。快速CLI支持,子类型(原子类型除外)和.相应的基元也有效。java.lang.Stringjava.lang.Numberjava.lang.Boolean

-v

OptionFlag

OptionFlag应在方法参数级别进行注释。参数的类型必须是Boolean/boolean

myDir

Argument

Argument还应在方法参数级别进行注释。该类型可以是上述任何受支持的类型。由于命令参数不与名称关联(从用户角度),因此用户输入的值将按照它们在方法上定义的顺序进行分配。强制参数始终首先分配。

相关文章

网络常见的 9 大命令,非常实用

1.ping 命令ping 是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping 就是一个测试程序,如果 ping 运行正确,...

命令行参数

用过Unix命令行,都会感受它的强大。Unix like包括Linux发行版、macOS等命令行在大部分情况下比图形化高效太多,很多高手都在用命令行。CUI和GUI尽管专业的程序员通常用CUI, 但G...

如何用java执行cmd命令

什么场景下用到cmd命令windows的cmd命令对于编程的小伙伴们来说应该是再熟悉不过了,比如说安装完node之后我们要查看一下node是否安装成功那么我们可以通过cmd命令行输入node -v来查...

Java中命令行调用大坑

Java中命令行调用大坑背景我司有一个查询服务接口机,QPS大概40~50,调用方式是Java调用Shell命令行的方式,核心代码如下:Process ps = Runtime.getRuntime(...

你了解JDK常用的7种命令行工具吗?

1 jps1.1 介绍jps是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,用来显示当前系统的java进程情况及进程id。1.2 命令格式jps [options] [hos...