快速命令行界面

createh55个月前 (01-08)技术教程54

什么是快速 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 运行正确,...

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

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

Java 命令行参数解析方式探索(四):Spark &amp; Flink

1. Spark./bin/spark-submit \ --name "Hello Spark" \ --master yarn \ --deploy-mode cluster \...

CMD常用命令大全「值得收藏」

前言平常在学校上课忘记带鼠标,触摸板又有点不方便。cmd 可以解决一大半问题!通过使用窗口命令,实现无鼠标办公!或者你想在朋友面前装个 x,不妨运行一下tree总而言之,cmd 命令记一些常用的,还是...

11款常用Java编程软件推荐(建议收藏)

大家好,我是mikechen。优秀的Java编程软件可以极大的提升我们的开发效率,所以今天给大家推荐一波必备Java编程软件@mikechen本篇已经收纳于mikechen创作的《阿里架构师进阶专题合...