diff --git a/PHPCI/Plugin/Grunt.php b/PHPCI/Plugin/Grunt.php new file mode 100644 index 00000000..892d8303 --- /dev/null +++ b/PHPCI/Plugin/Grunt.php @@ -0,0 +1,56 @@ + +* @package PHPCI +* @subpackage Plugins +*/ +class Grunt implements \PHPCI\Plugin +{ + protected $directory; + protected $task; + protected $preferDist; + protected $phpci; + protected $grunt; + protected $gruntfile; + + public function __construct(\PHPCI\Builder $phpci, array $options = array()) + { + $path = $phpci->buildPath; + $this->phpci = $phpci; + $this->directory = isset($options['directory']) ? $path . '/' . $options['directory'] : $path; + $this->task = isset($options['task']) ? $options['task'] : null; + $this->grunt = isset($options['grunt']) ? $options['grunt'] : 'grunt'; + $this->gruntfile = isset($options['gruntfile']) ? $options['gruntfile'] : 'Gruntfile.js'; + } + + /** + * Executes grunt and runs a specified command (e.g. install / update) + */ + public function execute() + { + // if npm does not work, we cannot use grunt, so we return false + if ( !$this->phpci->executeCommand( 'cd %s && npm install', $this->directory ) ) { + return false; + } + + // build the grunt command + $cmd = 'cd %s && ' . $this->grunt; + $cmd .= ' --no-color'; + $cmd .= ' --gruntfile %s'; + $cmd .= ' %s'; // the task that will be executed + + // and execute it + return $this->phpci->executeCommand($cmd, $this->directory, $this->gruntfile, $this->task); + } +} diff --git a/README.md b/README.md index 7acf5f4c..3b08e3c2 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ Similar to Travis CI, to support PHPCI in your project, you simply need to add a standard: "PSR2" php_cpd: allow_failures: true + grunt: + task: "build" complete: mysql: