在laravel中用Task Runner编写像Blade组件一样的Shell脚本功能

2023-06-01 00:00:00 组件 脚本 中用

Task Runner for Laravel是一个由Pascal Baljet开发的软件包,它可以让你编写像Blade Components一样的Shell脚本,并在本地或远程服务器上运行它们:

{{-- resources/views/tasks/deploy-app.blade.php --}}
cd /var/www/html
git pull origin {{ $branch }}
php artisan migrate --database={{ $databaseConnection() }}


考虑到这个包中的惯例,上述模板会有一个配套的任务类:

use ProtoneMedia\LaravelTaskRunner\Task;
 
class DeployApp extends Task
{
    public function __construct(public string $branch) { }
 
    public function databaseConnection()
    {
        return 'mysql';
    }
}

你可能已经注意到,数据库连接()的公共方法在模板中是可以调用的。

所有的公共方法都可以在任务刀片模板中使用。


如果你想触发上述任务,你可以使用包的 dispatch() 方法,它将在本地运行。

你也可以在后台调度任务,也可以在远程服务器上运行它们:

$output = DeployApp::dispatch();
 
$output = DeployApp::inBackgronud()
    ->onConnection('web')
    ->dispatch();
 
// API of the task result
$output->getBuffer();
$output->getExitCode();
$output->isSuccessful();
$output->isTimeout();
// returns the buffer as an array
$output->getLines();

这个包也有很好的测试助手,你可以在文档中读到这些。

你可以在GitHub上了解更多关于这个包的信息,获得完整的安装说明,并查看源代码。

https://github.com/protonemedia/laravel-task-runner#task-test-assertions
https://github.com/protonemedia/laravel-task-runner

相关文章