- Tasks are located by following PSR-4 standard
- Task loading by traits are removed - this is done to simplify loading of tasks. Instead of declaring tasks in traits you can just call them with static initialization methods. Also you won't need to include lots of traits into RoboFile. Usage of static class calls instead of traits is aimed for simplicity. One task = one class = one file.
- Tasks initialization syntax changed to
<?php
taskChangelog::init()
->change('refactored Robo')
->version('0.5.0')
->run();
?>
For one-line tasks are simplified to:
<?php
taskExec::_run('cap production deploy');
// equal to
taskExec::init()
->exec('cap production deploy')
->run();
// also
taskCopyDir::_run(['/var/log', '/backup/log']);
taskCleanDir::_run(['web/assets','tmp/','log/']);
taskRename::_run('Dockerfile', 'tmpDockerfile');
?>
Those commands will initializa and invoke tasks;
4 Stack tasks changes
<?php
// performs actions one by one
taskGit::stack()
->add('-A')
->commit("auto-update")
->pull()
->push()
->run();
// clones repo
taskGit::_clone('[email protected]:php-vcr/php-vcr.git');
// equal to
taskGit::stack()
->clone('[email protected]:php-vcr/php-vcr.git')
->run();
?>
This goes far well for Exec:
<?php
// run 1 command
taskExec::_run('grunt test');
// run 2 commands
taskExec::stack()
->exec('grunt test')
->exec('phpunit')
->run();
?>
5 RoboFile must contain a namespace so FQNs could be simplified by IDE to proposed variants. Namespace can be either:
- robo
- Robo
- ????
- Robo;
6 Directory Structure would be following:
src/
Command
RoboUpdate
RoboGlobalInstall
Interfaces
TaskInterface
RunnableInterface
Exception
TaskException
Commons
Executable
DynamicConfig
CommandStack
Output
Task
BaseTask
FileSystem
taskCleanDir
taskDeleteDir
task....
Codeception\
taskCodeceptRun
PhpUnit\
taskPhpUnit
Minify\
taskMinify
Docker\
task....
Npm\
taskNpmInstall
taskNpmUpdate
Rsync\
taskRsync
Svn\
taskSvnStack
Watch\
taskWatch
Exec\
taskExec
taskExecStack
Is there FTP support?