taeluf/cli

维护者

详细信息

gitlab.com/taeluf/php/cli

源代码

问题

安装: 283

依赖: 11

建议者: 3

安全: 0

星星: 0

分支: 0

v0.1.x-dev 2024-02-03 13:23 UTC

This package is auto-updated.

Last update: 2024-09-03 21:57:09 UTC


README

Php Cli 框架

一个(希望)简单的框架,用于运行命令行应用程序。它不是功能丰富。(没有自动的帮助菜单,也没有真正内置的命令行函数)

安装

composer require taeluf/cli v0.1.x-dev   

或在您的 composer.json

{"require":{ "taeluf/cli": "v0.1.x-dev"}}  

开始使用

使用内置的命令行生成一个命令行启动脚本,然后编辑它以适应您的需求。

vendor/bin/tlf-cli setup  

用法

通常,您将在顶部创建一个可执行的文件,包含 #!/usr/bin/env php 的 shebang,然后在下一行放置 <?php,然后是您的脚本。

以下是我们用于测试的示例

#!/usr/bin/env php  
<?php  
/**  
 * This file is to be a sample cli setup, like somebody would write if they were implementing this library.  
 *  
 * So let's try to implement 3 cli functions  
 *  
 * proto & proto main  ## print some useless information  
 * proto rand -chars abc -len 20 ## generate a random number  
 * proto evens -from 1 -to 113   
 *        ## get all even numbers in the range  
 *        ## defaults to -from 0 -to 50  
 *  
 */  
  
require(__DIR__.'/../code/Msgs.php');  
require(__DIR__.'/../code/Cli.php');  
  
  
$cli = new \Tlf\Cli();  
// load_json_file fails silently if the file does not exist  
$cli->load_json_file(__DIR__.'/defaults.json');   
$cli->load_inputs(json_decode(file_get_contents(__DIR__.'/user_configs.json'),true));  
$cli->load_stdin();  
  
$cli->load_command('main',  
    function($cli, $args){  
        echo "pointless output";  
    }  
);  
  
$cli->load_command('rand',   
    function($cli, $args){  
  
        $chars = $args['chars'];  
        $len = $args['len'];  
        $random = '';  
        $i = 0;  
        while(++$i<=$len){  
            $random .=   
                $chars[random_int(0,strlen($chars)-1)];  
        }  
  
        echo $random;  
    }, "generate a random number from --chars string of --length int"  
);  
  
$cli->load_command('evens',  
    function($cli, $args){  
        extract($args);  
        $i = $from;  
        do {  
            if ($i%2==0)echo $i."\n";  
        } while ($i++<$to);  
    }, "list even numbers. --from int --to int"  
);  
  
  
  
  
$cli->execute();  

测试此库

我不使用我的测试框架,因为我的测试框架使用这个,这样的循环依赖只是一个头疼的问题。

在开发期间测试此库,请运行 php test/test.php

测试很简单,应该保持这种状态。

待办事项

  • 编写更好的文档???