快速命令行界面

createh53个月前 (01-08)技术教程41

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

相关文章

如何用java执行cmd命令

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

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

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

Linux常用命令大全(最完整)

端口监听查看:ss -tln 查看TCP的listen的端口ss -tlnp 查看哪些进程使用了监听端口防火墙systemctl status iptables (或service iptables...

从IDE到命令行:程序员的生产力工具盘点

在程序员的日常工作中,工具的选择直接影响到开发效率与工作流的顺畅。除了代码编写本身,如何高效地管理项目、调试程序、版本控制,甚至提高代码质量,都是开发者关注的重点。本文将盘点几款帮助程序员提升生产力的...

CMD命令行运行Java 错误:找不到或无法加载主类

如果编写的代码用cmd命令来编译时正常的,也就是javac fileName.java可以编译成功,但是在使用java命令来运行java时,提示(错误:找不到或无法加载主类),会导致这种情况一般是:...

JVM实战—1.Java代码的运行原理

大纲1.Java代码到底是如何运行起来的2.JVM类加载机制的一系列概念3.JVM中有哪些内存区域及各自的作用4.JVM的垃圾回收机制的作用5.问题汇总1.Java代码到底是如何运行起来的(1)首先假...