diff --git a/PHPCI/Plugin.php b/PHPCI/Plugin.php index ac2960cd..23a2bbda 100644 --- a/PHPCI/Plugin.php +++ b/PHPCI/Plugin.php @@ -15,5 +15,6 @@ namespace PHPCI; */ interface Plugin { + public function isAllowedInStage($stage); public function execute(); } diff --git a/PHPCI/Plugin/AbstractPlugin.php b/PHPCI/Plugin/AbstractPlugin.php new file mode 100644 index 00000000..c986e602 --- /dev/null +++ b/PHPCI/Plugin/AbstractPlugin.php @@ -0,0 +1,31 @@ +allowedStages); + } + + /** + * Execute the plugin and return its success or failure. + * @return bool + */ + abstract public function execute(); +} diff --git a/PHPCI/Plugin/Atoum.php b/PHPCI/Plugin/Atoum.php index 877f009b..52fcb019 100644 --- a/PHPCI/Plugin/Atoum.php +++ b/PHPCI/Plugin/Atoum.php @@ -17,8 +17,13 @@ use PHPCI\Model\Build; * Atoum plugin, runs Atoum tests within a project. * @package PHPCI\Plugin */ -class Atoum implements \PHPCI\Plugin +class Atoum extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + private $args; private $config; private $directory; diff --git a/PHPCI/Plugin/Behat.php b/PHPCI/Plugin/Behat.php index d63016dc..5ace7bf3 100644 --- a/PHPCI/Plugin/Behat.php +++ b/PHPCI/Plugin/Behat.php @@ -20,8 +20,13 @@ use PHPCI\Model\BuildError; * @package PHPCI * @subpackage Plugins */ -class Behat implements \PHPCI\Plugin +class Behat extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $phpci; protected $build; protected $features; diff --git a/PHPCI/Plugin/Campfire.php b/PHPCI/Plugin/Campfire.php index 59ab9128..1829a8b3 100644 --- a/PHPCI/Plugin/Campfire.php +++ b/PHPCI/Plugin/Campfire.php @@ -20,8 +20,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Campfire implements \PHPCI\Plugin +class Campfire extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + private $url; private $authToken; private $userAgent; diff --git a/PHPCI/Plugin/CleanBuild.php b/PHPCI/Plugin/CleanBuild.php index 684e8e7a..fa1f6790 100644 --- a/PHPCI/Plugin/CleanBuild.php +++ b/PHPCI/Plugin/CleanBuild.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class CleanBuild implements \PHPCI\Plugin +class CleanBuild extends AbstractPlugin { protected $remove; protected $phpci; diff --git a/PHPCI/Plugin/Codeception.php b/PHPCI/Plugin/Codeception.php index c28e3a48..f3eca9e5 100644 --- a/PHPCI/Plugin/Codeception.php +++ b/PHPCI/Plugin/Codeception.php @@ -14,6 +14,7 @@ use PHPCI\Helper\Lang; use PHPCI\Model\Build; use PHPCI\Plugin\Util\TestResultParsers\Codeception as Parser; use Psr\Log\LogLevel; +use PHPCI\ZeroConfigPlugin; /** * Codeception Plugin - Enables full acceptance, unit, and functional testing. @@ -23,8 +24,13 @@ use Psr\Log\LogLevel; * @package PHPCI * @subpackage Plugins */ -class Codeception implements \PHPCI\Plugin, \PHPCI\ZeroConfigPlugin +class Codeception extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** @var string */ protected $args = ''; diff --git a/PHPCI/Plugin/Composer.php b/PHPCI/Plugin/Composer.php index bd5f6658..12938868 100644 --- a/PHPCI/Plugin/Composer.php +++ b/PHPCI/Plugin/Composer.php @@ -13,6 +13,7 @@ use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; use PHPCI\Helper\Lang; +use PHPCI\ZeroConfigPlugin; /** * Composer Plugin - Provides access to Composer functionality. @@ -20,7 +21,7 @@ use PHPCI\Helper\Lang; * @package PHPCI * @subpackage Plugins */ -class Composer implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class Composer extends AbstractPlugin implements ZeroConfigPlugin { protected $directory; protected $action; diff --git a/PHPCI/Plugin/CopyBuild.php b/PHPCI/Plugin/CopyBuild.php index f9646cac..b847b841 100644 --- a/PHPCI/Plugin/CopyBuild.php +++ b/PHPCI/Plugin/CopyBuild.php @@ -19,7 +19,7 @@ use PHPCI\Helper\Lang; * @package PHPCI * @subpackage Plugins */ -class CopyBuild implements \PHPCI\Plugin +class CopyBuild extends AbstractPlugin { protected $directory; protected $ignore; diff --git a/PHPCI/Plugin/Deployer.php b/PHPCI/Plugin/Deployer.php index 2db839e3..80ed06d7 100644 --- a/PHPCI/Plugin/Deployer.php +++ b/PHPCI/Plugin/Deployer.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Deployer implements \PHPCI\Plugin +class Deployer extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + protected $webhookUrl; protected $reason; diff --git a/PHPCI/Plugin/Email.php b/PHPCI/Plugin/Email.php index 17e235e2..ef1fe7d5 100644 --- a/PHPCI/Plugin/Email.php +++ b/PHPCI/Plugin/Email.php @@ -23,8 +23,13 @@ use Psr\Log\LogLevel; * @package PHPCI * @subpackage Plugins */ -class Email implements \PHPCI\Plugin +class Email extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/Env.php b/PHPCI/Plugin/Env.php index b89bf67d..a37446bd 100644 --- a/PHPCI/Plugin/Env.php +++ b/PHPCI/Plugin/Env.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Env implements \PHPCI\Plugin +class Env extends AbstractPlugin { protected $phpci; protected $build; diff --git a/PHPCI/Plugin/FlowdockNotify.php b/PHPCI/Plugin/FlowdockNotify.php index 8ac9f2ab..7f8b657c 100644 --- a/PHPCI/Plugin/FlowdockNotify.php +++ b/PHPCI/Plugin/FlowdockNotify.php @@ -19,8 +19,13 @@ use Mremi\Flowdock\Api\Push\TeamInboxMessage; * @package PHPCI * @subpackage Plugins */ -class FlowdockNotify implements \PHPCI\Plugin +class FlowdockNotify extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + private $api_key; private $email; const MESSAGE_DEFAULT = 'Build %BUILD% has finished for commit %SHORT_COMMIT% diff --git a/PHPCI/Plugin/Git.php b/PHPCI/Plugin/Git.php index 60d6b551..7c146300 100644 --- a/PHPCI/Plugin/Git.php +++ b/PHPCI/Plugin/Git.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Git implements \PHPCI\Plugin +class Git extends AbstractPlugin { protected $phpci; protected $build; diff --git a/PHPCI/Plugin/Grunt.php b/PHPCI/Plugin/Grunt.php index 4d62ffd8..77715656 100644 --- a/PHPCI/Plugin/Grunt.php +++ b/PHPCI/Plugin/Grunt.php @@ -18,7 +18,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Grunt implements \PHPCI\Plugin +class Grunt extends AbstractPlugin { protected $directory; protected $task; diff --git a/PHPCI/Plugin/Gulp.php b/PHPCI/Plugin/Gulp.php index b6c6cab4..bbdbf7e0 100644 --- a/PHPCI/Plugin/Gulp.php +++ b/PHPCI/Plugin/Gulp.php @@ -18,7 +18,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Gulp implements \PHPCI\Plugin +class Gulp extends AbstractPlugin { protected $directory; protected $task; diff --git a/PHPCI/Plugin/HipchatNotify.php b/PHPCI/Plugin/HipchatNotify.php index a39b94fe..7af2f5f9 100644 --- a/PHPCI/Plugin/HipchatNotify.php +++ b/PHPCI/Plugin/HipchatNotify.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class HipchatNotify implements \PHPCI\Plugin +class HipchatNotify extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + protected $authToken; protected $color; protected $notify; diff --git a/PHPCI/Plugin/Irc.php b/PHPCI/Plugin/Irc.php index a7610a8c..7ae5beef 100644 --- a/PHPCI/Plugin/Irc.php +++ b/PHPCI/Plugin/Irc.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Irc implements \PHPCI\Plugin +class Irc extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + protected $phpci; protected $build; protected $message; diff --git a/PHPCI/Plugin/Lint.php b/PHPCI/Plugin/Lint.php index 1de49e41..2284ccfe 100644 --- a/PHPCI/Plugin/Lint.php +++ b/PHPCI/Plugin/Lint.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Lint implements PHPCI\Plugin +class Lint extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $directories; protected $recursive = true; protected $ignore; diff --git a/PHPCI/Plugin/Mysql.php b/PHPCI/Plugin/Mysql.php index fdb521ef..5d4035cd 100644 --- a/PHPCI/Plugin/Mysql.php +++ b/PHPCI/Plugin/Mysql.php @@ -21,7 +21,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Mysql implements \PHPCI\Plugin +class Mysql extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/PackageBuild.php b/PHPCI/Plugin/PackageBuild.php index fb116640..04a52d99 100644 --- a/PHPCI/Plugin/PackageBuild.php +++ b/PHPCI/Plugin/PackageBuild.php @@ -18,7 +18,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PackageBuild implements \PHPCI\Plugin +class PackageBuild extends AbstractPlugin { protected $directory; protected $filename; diff --git a/PHPCI/Plugin/Pdepend.php b/PHPCI/Plugin/Pdepend.php index faef406d..10b787ac 100644 --- a/PHPCI/Plugin/Pdepend.php +++ b/PHPCI/Plugin/Pdepend.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Pdepend implements \PHPCI\Plugin +class Pdepend extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $args; /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/Pgsql.php b/PHPCI/Plugin/Pgsql.php index 60057464..5d6d18e4 100644 --- a/PHPCI/Plugin/Pgsql.php +++ b/PHPCI/Plugin/Pgsql.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Pgsql implements \PHPCI\Plugin +class Pgsql extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/Phar.php b/PHPCI/Plugin/Phar.php index c734bb6c..f3969829 100644 --- a/PHPCI/Plugin/Phar.php +++ b/PHPCI/Plugin/Phar.php @@ -10,7 +10,7 @@ use Phar as PHPPhar; /** * Phar Plugin */ -class Phar implements \PHPCI\Plugin +class Phar extends AbstractPlugin { /** * PHPCI diff --git a/PHPCI/Plugin/Phing.php b/PHPCI/Plugin/Phing.php index e322b72e..08ced3c3 100644 --- a/PHPCI/Plugin/Phing.php +++ b/PHPCI/Plugin/Phing.php @@ -20,7 +20,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Phing implements \PHPCI\Plugin +class Phing extends AbstractPlugin { private $directory; diff --git a/PHPCI/Plugin/PhpCodeSniffer.php b/PHPCI/Plugin/PhpCodeSniffer.php index 6f4ed4e0..8d072060 100644 --- a/PHPCI/Plugin/PhpCodeSniffer.php +++ b/PHPCI/Plugin/PhpCodeSniffer.php @@ -13,6 +13,7 @@ use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; use PHPCI\Model\BuildError; +use PHPCI\ZeroConfigPlugin; /** * PHP Code Sniffer Plugin - Allows PHP Code Sniffer testing. @@ -20,8 +21,13 @@ use PHPCI\Model\BuildError; * @package PHPCI * @subpackage Plugins */ -class PhpCodeSniffer implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class PhpCodeSniffer extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/PhpCpd.php b/PHPCI/Plugin/PhpCpd.php index 2424d41e..f074f0dc 100644 --- a/PHPCI/Plugin/PhpCpd.php +++ b/PHPCI/Plugin/PhpCpd.php @@ -20,8 +20,13 @@ use PHPCI\Model\BuildError; * @package PHPCI * @subpackage Plugins */ -class PhpCpd implements \PHPCI\Plugin +class PhpCpd extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $directory; protected $args; protected $phpci; diff --git a/PHPCI/Plugin/PhpCsFixer.php b/PHPCI/Plugin/PhpCsFixer.php index 9aa0d33f..36033bf8 100644 --- a/PHPCI/Plugin/PhpCsFixer.php +++ b/PHPCI/Plugin/PhpCsFixer.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpCsFixer implements \PHPCI\Plugin +class PhpCsFixer extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/PhpDocblockChecker.php b/PHPCI/Plugin/PhpDocblockChecker.php index 2396497c..7c20e013 100644 --- a/PHPCI/Plugin/PhpDocblockChecker.php +++ b/PHPCI/Plugin/PhpDocblockChecker.php @@ -12,6 +12,7 @@ namespace PHPCI\Plugin; use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; +use PHPCI\ZeroConfigPlugin; /** * PHP Docblock Checker Plugin - Checks your PHP files for appropriate uses of Docblocks @@ -19,8 +20,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpDocblockChecker implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class PhpDocblockChecker extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/PhpLoc.php b/PHPCI/Plugin/PhpLoc.php index c8dedb91..c67c88f9 100644 --- a/PHPCI/Plugin/PhpLoc.php +++ b/PHPCI/Plugin/PhpLoc.php @@ -12,6 +12,7 @@ namespace PHPCI\Plugin; use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; +use PHPCI\ZeroConfigPlugin; /** * PHP Loc - Allows PHP Copy / Lines of Code testing. @@ -19,7 +20,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpLoc implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class PhpLoc extends AbstractPlugin implements ZeroConfigPlugin { /** * @var string diff --git a/PHPCI/Plugin/PhpMessDetector.php b/PHPCI/Plugin/PhpMessDetector.php index ec92bc61..11895f55 100644 --- a/PHPCI/Plugin/PhpMessDetector.php +++ b/PHPCI/Plugin/PhpMessDetector.php @@ -12,6 +12,7 @@ namespace PHPCI\Plugin; use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; +use PHPCI\ZeroConfigPlugin; /** * PHP Mess Detector Plugin - Allows PHP Mess Detector testing. @@ -19,8 +20,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpMessDetector implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class PhpMessDetector extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/PhpParallelLint.php b/PHPCI/Plugin/PhpParallelLint.php index febed528..ed319a48 100644 --- a/PHPCI/Plugin/PhpParallelLint.php +++ b/PHPCI/Plugin/PhpParallelLint.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpParallelLint implements \PHPCI\Plugin +class PhpParallelLint extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/PhpSpec.php b/PHPCI/Plugin/PhpSpec.php index e468a718..4918dd4e 100644 --- a/PHPCI/Plugin/PhpSpec.php +++ b/PHPCI/Plugin/PhpSpec.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpSpec implements PHPCI\Plugin +class PhpSpec extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/PhpTalLint.php b/PHPCI/Plugin/PhpTalLint.php index 8513ec36..960ccfba 100644 --- a/PHPCI/Plugin/PhpTalLint.php +++ b/PHPCI/Plugin/PhpTalLint.php @@ -19,8 +19,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpTalLint implements PHPCI\Plugin +class PhpTalLint extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $directories; protected $recursive = true; protected $suffixes; diff --git a/PHPCI/Plugin/PhpUnit.php b/PHPCI/Plugin/PhpUnit.php index f716f079..6923915c 100644 --- a/PHPCI/Plugin/PhpUnit.php +++ b/PHPCI/Plugin/PhpUnit.php @@ -13,6 +13,7 @@ use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; use PHPCI\Plugin\Util\TapParser; +use PHPCI\ZeroConfigPlugin; /** * PHP Unit Plugin - Allows PHP Unit testing. @@ -20,8 +21,13 @@ use PHPCI\Plugin\Util\TapParser; * @package PHPCI * @subpackage Plugins */ -class PhpUnit implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class PhpUnit extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + protected $args; protected $phpci; protected $build; diff --git a/PHPCI/Plugin/Shell.php b/PHPCI/Plugin/Shell.php index 5e914f3e..ca219ab6 100644 --- a/PHPCI/Plugin/Shell.php +++ b/PHPCI/Plugin/Shell.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Shell implements \PHPCI\Plugin +class Shell extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/SlackNotify.php b/PHPCI/Plugin/SlackNotify.php index 0e8d1cad..5b83d4fb 100644 --- a/PHPCI/Plugin/SlackNotify.php +++ b/PHPCI/Plugin/SlackNotify.php @@ -17,8 +17,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class SlackNotify implements \PHPCI\Plugin +class SlackNotify extends AbstractPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('complete', 'success', 'failure', 'fixed', 'broken'); + private $webHook; private $room; private $username; diff --git a/PHPCI/Plugin/Sqlite.php b/PHPCI/Plugin/Sqlite.php index f80ece3d..bd616eb0 100644 --- a/PHPCI/Plugin/Sqlite.php +++ b/PHPCI/Plugin/Sqlite.php @@ -19,7 +19,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Sqlite implements \PHPCI\Plugin +class Sqlite extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/TechnicalDebt.php b/PHPCI/Plugin/TechnicalDebt.php index 6d4711b5..e22d213e 100755 --- a/PHPCI/Plugin/TechnicalDebt.php +++ b/PHPCI/Plugin/TechnicalDebt.php @@ -12,6 +12,7 @@ namespace PHPCI\Plugin; use PHPCI; use PHPCI\Builder; use PHPCI\Model\Build; +use PHPCI\ZeroConfigPlugin; /** * Technical Debt Plugin - Checks for existence of "TODO", "FIXME", etc. @@ -20,8 +21,13 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class TechnicalDebt implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin +class TechnicalDebt extends AbstractPlugin implements ZeroConfigPlugin { + /** + * @inheritdoc + */ + protected $allowedStages = array('test'); + /** * @var \PHPCI\Builder */ diff --git a/PHPCI/Plugin/Util/Executor.php b/PHPCI/Plugin/Util/Executor.php index bdd06b7e..66c0e108 100644 --- a/PHPCI/Plugin/Util/Executor.php +++ b/PHPCI/Plugin/Util/Executor.php @@ -138,7 +138,7 @@ class Executor $this->setPluginStatus($stage, $plugin, Build::STATUS_RUNNING); // Try and execute it - if ($this->executePlugin($plugin, $options)) { + if ($this->executePlugin($plugin, $options, $stage)) { // Execution was successful $this->logger->logSuccess(Lang::get('plugin_success')); $this->setPluginStatus($stage, $plugin, Build::STATUS_SUCCESS); @@ -166,8 +166,12 @@ class Executor /** * Executes a given plugin, with options and returns the result. + * @param string $plugin Plugin name + * @param array $options Plugin options (from phpci.yml) + * @param string $stage Stage name + * @return bool */ - public function executePlugin($plugin, $options) + public function executePlugin($plugin, $options, $stage) { // Any plugin name without a namespace separator is a PHPCI built in plugin // if not we assume it's a fully name-spaced class name that implements the plugin interface. @@ -188,6 +192,12 @@ class Executor try { // Build and run it $obj = $this->pluginFactory->buildPlugin($class, $options); + + if (!$obj->isAllowedInStage($stage)) { + $this->logger->logFailure('Plugin "' . $plugin . '" cannot be run in stage: ' . $stage); + return false; + } + return $obj->execute(); } catch (\Exception $ex) { $this->logger->logFailure(Lang::get('exception') . $ex->getMessage(), $ex); diff --git a/PHPCI/Plugin/Wipe.php b/PHPCI/Plugin/Wipe.php index e6b619a0..aa3d4156 100644 --- a/PHPCI/Plugin/Wipe.php +++ b/PHPCI/Plugin/Wipe.php @@ -18,7 +18,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Wipe implements \PHPCI\Plugin +class Wipe extends AbstractPlugin { /** * @var \PHPCI\Builder diff --git a/PHPCI/Plugin/Xmpp.php b/PHPCI/Plugin/Xmpp.php index ccfc4399..53d440f8 100644 --- a/PHPCI/Plugin/Xmpp.php +++ b/PHPCI/Plugin/Xmpp.php @@ -18,7 +18,7 @@ use PHPCI\Model\Build; * @package PHPCI * @subpackage Plugins */ -class XMPP implements \PHPCI\Plugin +class XMPP extends AbstractPlugin { protected $directory; protected $phpci;