hambrook / clitaskrunner
在后台运行CLI命令,并通过回调获取包括缓冲区和行更新的事件。您可以订阅任何可写流,并获取在收到新行或每次缓冲区更新时触发的回调。
This package is not auto-updated.
Last update: 2024-09-18 17:50:30 UTC
README
#CLITaskRunner
在后台运行CLI命令,并通过回调获取包括缓冲区和行更新的事件。您可以订阅任何可写流,并获取在收到新行或每次缓冲区更新时触发的回调。
##示例
$cmd = "mysqldump -uroot -proot -v dbname | mysql -uroot -proot dbname2"; $CLITR = new \Hambrook\CLITaskRunner\CLITaskRunner($cmd); $CLITR->onLine( "stdErr", function($v) { echo "\nCopying table structure: ".$v }, "/\-\- Retrieving table.*? ([^ ]+)\.\.\./" ); $CLITR->onLine( "stdErr", function() { echo "\nCopying table rows..." }, "/\-\- Retrieving rows/" ); $CLITR->process();
##适合谁?可能主要是CLI应用程序开发者,但可能会有我没有想到的使用场景。
####为什么使用这个?我创建这个工具是因为我需要在CLI应用程序中使用mysqldump
和rsync
,并想自定义这些命令的输出。这不能用简单的popen
完成,因为mysqldump
将它的详细输出放入stdErr
流而不是stdOut
。然后,我自然而然地使其尽可能灵活。
####何时使用这个?当您需要运行CLI命令并在特定流上发生特定输出时收到通知。
####这不是什么?这个库位于您的软件和它运行的CLI命令之间。它不在您的软件和用户之间。它不执行任何用户输入管理、参数管理、输出格式化或其他类似操作。它帮助您的软件从长时间运行的CLI命令中获取更新。
##函数 ###__construct()
CLITaskRunner
__construct
(string
$command
)
创建一个带有准备运行的命令的新实例
###onLine()
bool
onLine
(string
$stream
, callable
$callback
,
[bool|string
$pattern
=false]
)
添加当收到新行时的回调,可选正则表达式模式。
###onBuffer()
bool
onBuffer
(string
$stream
, callable
$callback
,
[bool|string
$pattern
=false]
)
添加当收到缓冲区时的回调,可选正则表达式模式。
###onSuccess()
bool
onSuccess
(callable
$callback
)
添加当命令成功时的回调。
###onFailure()
bool
onFailure
(callable
$callback
)
添加当命令失败时的回调。
###onComplete()
bool
onComplete
(callable
$callback
)
添加当进程完成时的回调。在onSuccess和onFailure之后调用。
###bufferSize()
bool|int
bufferSize
(
[int
$bufferSize
=10]
)
获取或设置缓冲区大小。当前缓冲区大小对所有流是通用的。
###streams()
bool
streams
(
[array
$streams
=[]]
)
获取或设置流数组。每个流将在添加回调时使用其数组键作为流键。
##测试 测试即将推出。
##反馈 如果您喜欢它,请告诉我。如果您讨厌它,请告诉我。如果您使用过并认为“一般”,我也很乐意听到您的反馈。
##贡献 请随意fork此项目并提交pull请求,或者甚至通过问题跟踪器请求功能。请确保pull请求描述详细,并符合现有的代码风格。
##路线图
- 添加对写入标准输入流的支持
- 为所有函数添加类型提示
- 添加文档
- 添加更多示例
- 添加更多单元测试
- 添加任何其他应包括的标准文档
- 如果您有任何想法,请告诉我。
##许可证 版权 © 2015 Rick Hambrook
本程序是自由软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,无论是许可证的第3版,还是(根据您的选择)任何更新版本。
本程序的发布是希望它会有所用途,但没有任何保证;甚至没有关于适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了GNU通用公共许可证的一份副本。如果没有,请参阅https://gnu.ac.cn/licenses/。