codegyre/robo

该软件包已被弃用且不再维护。作者建议使用 consolidation/robo 软件包。

现代任务执行器

5.0.0 2024-04-17 15:13 UTC

README

现代且简单的PHP任务执行器,受Gulp和Rake启发,旨在自动化常见任务

Gitter Latest Stable Version Latest Unstable Version Total Downloads

ci scrutinizer codecov license

  • 编写跨平台脚本
  • 处理资产(less, sass, 压缩)
  • 运行测试
  • 执行守护进程(和工作进程)
  • 监视文件系统更改
  • 使用sftp/ssh/docker进行部署

分支

所有版本大致兼容;每个主要版本引入的破坏性变更相对较小,通常仅影响大多数客户不使用的类。

注意,Robo 5.x 已移除 consolidation/self-update 作为直接依赖。如果您使用它来更新应用程序 Phar,则需要显式添加它。

安装

Phar

下载 robo.phar >

wget https://robo.li/robo.phar

要全局安装,请将 robo.phar 放入 /usr/bin。 (OSX 10.11+ 中的 /usr/local/bin)

chmod +x robo.phar && sudo mv robo.phar /usr/bin/robo

OSX 10.11+

chmod +x robo.phar && sudo mv robo.phar /usr/local/bin/robo

现在您可以通过 robo 简单地使用它。

Composer

  • 运行 composer require consolidation/robo:^4
  • 使用 vendor/bin/robo 执行 Robo 任务。

用法

所有任务都定义为 RoboFile.php 中的 公共方法。可以通过运行 robo init 创建它。所有以 task 前缀开始的 traits 中的受保护方法都是任务,可以在您的任务中进行配置和执行。

示例

通过查看其自己的 RoboFileCodeception 项目的 RoboFile 来通过示例学习 Robo 是最好的方法。在 examples/RoboFile.php 中也有一些基本的示例命令。

以下是其中的几个片段

运行接受测试,同时启动本地服务器和 selenium 服务器。

<?php

use Robo\Symfony\ConsoleIO;

class RoboFile extends \Robo\Tasks
{

    function testAcceptance(ConsoleIO $io, $seleniumPath = '~/selenium-server-standalone-2.39.0.jar')
    {
       // launches PHP server on port 8000 for web dir
       // server will be executed in background and stopped in the end
       $this->collectionBuilder($io)->taskServer(8000)
            ->background()
            ->dir('web')
            ->run();

       // running Selenium server in background
       $this->collectionBuilder($io)->taskExec('java -jar ' . $seleniumPath)
            ->background()
            ->run();

       // loading Symfony Command and running with passed argument
       $this->collectionBuilder($io)->taskSymfonyCommand(new \Codeception\Command\Run('run'))
            ->arg('suite','acceptance')
            ->run();
    }
}

如果您执行 robo,您将看到名为 test:acceptance 的任务添加到可用任务列表中。要执行它,您应该运行 robo test:acceptance。您可以通过传递新路径作为参数来更改 selenium 服务器的路径。

robo test:acceptance "C:\Downloads\selenium.jar"

使用 watch 任务,因此您可以使用它来运行测试或构建资产。

<?php
class RoboFile extends \Robo\Tasks {

    function watchComposer(ConsoleIO $io)
    {
        // when composer.json changes `composer update` will be executed
        $this->collectionBuilder($io)->taskWatch()->monitor('composer.json', function() use ($io) {
            $this->collectionBuilder($io)->taskComposerUpdate()->run();
        })->run();
    }
}

清理日志和缓存

<?php
class RoboFile extends \Robo\Tasks
{
    public function clean(ConsoleIO $io)
    {
        $this->collectionBuilder($io)->taskCleanDir([
            'app/cache',
            'app/logs'
        ])->run();

        $this->collectionBuilder($io)->taskDeleteDir([
            'web/assets/tmp_uploads',
        ])->run();
    }
}

此任务清理 app/cacheapp/logs 目录(忽略 .gitignore 和 .gitkeep 文件)。可以通过运行以下命令来执行:

robo clean

创建 Phar 存档

function buildPhar(collectionBuilder $io)
{
    $files = Finder::create()->ignoreVCS(true)->files()->name('*.php')->in(__DIR__);
    $packer = $this->collectionBuilder($io)->taskPackPhar('robo.phar');
    foreach ($files as $file) {
        $packer->addFile($file->getRelativePathname(), $file->getRealPath());
    }
    $packer->addFile('robo','robo')
        ->executable('robo')
        ->run();
}

我们需要更多的任务!

创建您自己的任务,并通过 Pull Requests 提交它们或创建带有 "type": "robo-tasks" 的包 在 Packagist 上

鸣谢

关注 @robo_php 以获取更新。

Consolidation 团队 和我们的 出色的贡献者 带来。

许可

MIT