taeluf / cli
v0.1.x-dev
2024-02-03 13:23 UTC
Requires (Dev)
- taeluf/code-scrawl: v0.8.x-dev
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
测试很简单,应该保持这种状态。
待办事项
- 编写更好的文档???