项目地址: github.com/lvyahui8/rc…php
部分业务使用PHP编写运维脚本, 但PHP缺少一个易用的命令行程序开发库. 此框架的基于注解的方式支持填空式的快速开发命令行脚本. 并提供统一的日志|参数解析|控制台格式输出|帮助文档能力.mysql
在运维脚本项目中引入依赖.git
composer require hongye/rc-cmd
复制代码
建立一个工具类好比SampleTool, 并继承\Ruochen\Tools\CommandTool
, 分别在类和方法上加上以下注解. 最终经过调用 SampleTool::getInstance()->process();
使类文件变为脚本, 并为类文件加上可执行权限.github
框架实现了一些易用的注解,基于注解快速定义命令、命令选项、命令参数. 因为PHP自己并不支持注解, 故注解须要添加在文档注释中.sql
能够为IDE添加注解支持bash
此注解为工具定义一个命令,属性以下composer
此注解为命令定义一个操做数,属性以下框架
此注解为命令定义一个选项。此注解能够注解在class或者command method上,若是注解在class上,则在全部command method上均可以访问到运维
命令工具文件 samplessh
#!/usr/bin/env php
<?php
namespace Ruochen\Tools;
use League\CLImate\CLImate;
use Ruochen\Annotations\Command;
use Ruochen\Annotations\Desc;
use Ruochen\Annotations\Operand;
use Ruochen\Annotations\Option;
use Ruochen\Foundation\CommandTool;
use Ruochen\Helpers\ANSIHelper;
/** * Class SampleTool * @package Examples * @Option(short="d",long="database",desc="select one database",mode="requiredArg") */
class SampleTool extends CommandTool {
/** * @Command(desc="query_xxx") * @Operand(name="key",mode="required") * @Desc("query some data") */
public function query(){
$database = $this->getOption('d');
$this->logger->info("query.....$database");
}
/** * @Command(name="ll") * @Desc(value="list all data") * @Option(short="f",long="filter",mode="requiredArg",desc="xxxxx") */
public function list(){
$cli = new CLImate();
$outTables [] = [
'Pid','Name','Stat',
];
$outTables [] = [
1996, 'crond', ANSIHelper::colorWrap('OK', ANSIHelper::FG_BLUE),
];
$outTables [] = [
1107, 'sshd', ANSIHelper::colorWrap('ERR', ANSIHelper::FG_READ),
];
$outTables [] = [
1993, 'rsyslogd', ANSIHelper::colorWrap('UNKOWN', ANSIHelper::FG_YELLOW),
];
$cli->columns($outTables);
}
/** * @Command("dp") * @Desc("dump all data") */
public function dump(){
$this->logger->info("dump.....");
}
}
$sampleTool = SampleTool::getInstance();
$sampleTool->process();
复制代码
命令行提示
$ ./sample
Usage: ./sample <command> [options] [operands]
Options:
-v, --version Show version information and quit
-h, --help Show this help and quit
-d, --database select one database
Commands:
query query_xxx
ll list all data
dp dump all data
复制代码
$ ./sample ll
Pid Name Stat
1996 crond OK
1107 sshd ERR
1993 rsyslogd UNKOWN
复制代码
$ ./sample query xxxx -d lvyahui
[2017-12-26 11:51:45] SampleTool.INFO: query.....lvyahui [] []
复制代码
项目地址: github.com/lvyahui8/rc…