Modern task runner for PHP
PHP CSS
Latest commit 412a4c7 Jan 20, 2017 @greg-1-anderson greg-1-anderson committed on GitHub Merge pull request #524 from grasmash/message-json-encoding
Making printTaskProgress() json ouput more legible.
Permalink
Failed to load latest commit information.
.github Use 'has tests' instead of 'needs test' in PR template. Nov 18, 2016
build/logs Add build/logs directory. Apr 25, 2016
data/Task/Development Add GenerateMarkdownDocCest test. Sep 3, 2016
docs Merge pull request #521 from grasmash/feature/exec-input Jan 20, 2017
examples Removed unused imports. Nov 28, 2016
scripts/composer Fixes #483: Update dependencies for php 5.5 during composer install (#… Nov 10, 2016
src Making printTaskProgress() json ouput more legible. Jan 20, 2017
tests Merge pull request #498 from Korikulum/master Jan 17, 2017
.editorconfig Provide editorconfig file Mar 17, 2016
.gitignore Add --coverage-html option to ./robo test command. May 20, 2016
.scrutinizer.yml Exclude RoboFile.php from Scrutinizer. (#401) Aug 6, 2016
.travis.yml Fixes #483: Update dependencies for php 5.5 during composer install (#… Nov 10, 2016
CHANGELOG.md Add a changelog for 1.0.5 release. Nov 24, 2016
CONTRIBUTING.md Fix example of sniff command. Mar 30, 2016
LICENSE updated license and readme with Consolidation Nov 11, 2016
README.md updated license and readme with Consolidation Nov 11, 2016
RoboFile.php Removed unused imports. Nov 28, 2016
codeception.yml updated deps, config fixed Apr 25, 2016
composer.json Support custom events from annotated command project. Set up inflecto… Nov 24, 2016
composer.lock Support custom events from annotated command project. Set up inflecto… Nov 24, 2016
robo Test Runner May 22, 2016

README.md

RoboTask

Modern and simple PHP task runner inspired by Gulp and Rake aimed to automate common tasks:

Gitter Latest Stable Version Latest Unstable Version Total Downloads PHP 7 ready License

Build Status Scrutinizer Code Quality Dependency Status

  • writing cross-platform scripts
  • processing assets (less, sass, minification)
  • running tests
  • executing daemons (and workers)
  • watching filesystem changes
  • deployment with sftp/ssh/docker

Installing

Phar

Download robo.phar >

wget http://robo.li/robo.phar

To install globally put robo.phar in /usr/bin.

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

Now you can use it just like robo.

Composer

  • Run composer require consolidation/robo:~1
  • Use vendor/bin/robo to execute Robo tasks.

Usage

All tasks are defined as public methods in RoboFile.php. It can be created by running robo. All protected methods in traits that start with task prefix are tasks and can be configured and executed in your tasks.

Examples

The best way to learn Robo by example is to take a look into its own RoboFile or RoboFile of Codeception project. There are also some basic example commands in examples/RoboFile.php.

Here are some snippets from them:


Run acceptance test with local server and selenium server started.

<?php
class RoboFile extends \Robo\Tasks
{

    function testAcceptance($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->taskServer(8000)
            ->background()
            ->dir('web')
            ->run();

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

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

If you execute robo you will see this task added to list of available task with name: test:acceptance. To execute it you shoud run robo test:acceptance. You may change path to selenium server by passing new path as a argument:

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

Using watch task so you can use it for running tests or building assets.

<?php
class RoboFile extends \Robo\Tasks {

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

Cleaning logs and cache

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

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

This task cleans app/cache and app/logs dirs (ignoring .gitignore and .gitkeep files) Can be executed by running:

robo clean

Creating Phar archive

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

We need more tasks!

Create your own tasks and send them as Pull Requests or create packages prefixed with robo- on Packagist.

Credits

Follow @robo_php for updates.

Brought to you by Consolidation Team and our awesome contributors.

License

MIT