From 16a5add8593d158bd718b91a92b08cf5f8a9a6ff Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Mon, 11 Jul 2016 22:00:04 +0600 Subject: [PATCH 1/3] Refactored plugins --- .gitignore | 1 - app/pluginconfig.example.php | 23 --- src/PHPCensor/Builder.php | 52 +---- src/PHPCensor/Plugin.php | 41 +++- src/PHPCensor/Plugin/Atoum.php | 18 +- src/PHPCensor/Plugin/Behat.php | 27 +-- src/PHPCensor/Plugin/Campfire.php | 27 ++- src/PHPCensor/Plugin/CleanBuild.php | 21 +- src/PHPCensor/Plugin/Codeception.php | 65 +++--- src/PHPCensor/Plugin/Composer.php | 53 +++-- src/PHPCensor/Plugin/CopyBuild.php | 17 +- src/PHPCensor/Plugin/Deployer.php | 14 +- src/PHPCensor/Plugin/Email.php | 32 +-- src/PHPCensor/Plugin/Env.php | 21 +- src/PHPCensor/Plugin/FlowdockNotify.php | 20 +- src/PHPCensor/Plugin/Git.php | 19 +- src/PHPCensor/Plugin/Grunt.php | 27 +-- src/PHPCensor/Plugin/Gulp.php | 29 +-- src/PHPCensor/Plugin/HipchatNotify.php | 17 +- src/PHPCensor/Plugin/Irc.php | 31 +-- src/PHPCensor/Plugin/Lint.php | 26 +-- src/PHPCensor/Plugin/Mysql.php | 32 +-- src/PHPCensor/Plugin/PackageBuild.php | 16 +- src/PHPCensor/Plugin/Pdepend.php | 25 +-- src/PHPCensor/Plugin/Pgsql.php | 31 +-- src/PHPCensor/Plugin/Phar.php | 61 +----- src/PHPCensor/Plugin/Phing.php | 45 +--- src/PHPCensor/Plugin/PhpCodeSniffer.php | 72 +++---- src/PHPCensor/Plugin/PhpCpd.php | 22 +- src/PHPCensor/Plugin/PhpCsFixer.php | 36 +--- src/PHPCensor/Plugin/PhpDocblockChecker.php | 58 +++--- src/PHPCensor/Plugin/PhpLoc.php | 21 +- src/PHPCensor/Plugin/PhpMessDetector.php | 70 +++---- src/PHPCensor/Plugin/PhpParallelLint.php | 33 +-- src/PHPCensor/Plugin/PhpSpec.php | 33 +-- src/PHPCensor/Plugin/PhpTalLint.php | 42 +--- src/PHPCensor/Plugin/PhpUnit.php | 12 +- src/PHPCensor/Plugin/Shell.php | 28 +-- src/PHPCensor/Plugin/SlackNotify.php | 11 +- src/PHPCensor/Plugin/Sqlite.php | 27 +-- src/PHPCensor/Plugin/TechnicalDebt.php | 73 +++---- src/PHPCensor/Plugin/Util/Executor.php | 32 ++- src/PHPCensor/Plugin/Util/Factory.php | 216 -------------------- src/PHPCensor/Plugin/Wipe.php | 27 +-- src/PHPCensor/Plugin/Xmpp.php | 30 +-- 45 files changed, 407 insertions(+), 1227 deletions(-) delete mode 100644 app/pluginconfig.example.php delete mode 100644 src/PHPCensor/Plugin/Util/Factory.php diff --git a/.gitignore b/.gitignore index c86bb192..6df93349 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,5 @@ /composer.phar /runtime /app/loggerconfig.php -/app/pluginconfig.php /app/config.yml /public/assets/vendor diff --git a/app/pluginconfig.example.php b/app/pluginconfig.example.php deleted file mode 100644 index 538d30ff..00000000 --- a/app/pluginconfig.example.php +++ /dev/null @@ -1,23 +0,0 @@ -registerResource( - // This function will be called when the resource is needed. - function() { - return [ - 'Foo' => "Stuff", - 'Bar' => "More Stuff" - ]; - }, - - // In addition to the function for building the resource the system - // also needs to be told when to load the resource. Either or both - // of the following arguments can be used (null to ignore) - - // This resource will only be given when the argument name is: - "ResourceArray", - - // The resource will only be given when the type hint is: - PHPCensor\Plugin\Util\Factory::TYPE_ARRAY - ); -}; diff --git a/src/PHPCensor/Builder.php b/src/PHPCensor/Builder.php index 40280acf..87d8694e 100644 --- a/src/PHPCensor/Builder.php +++ b/src/PHPCensor/Builder.php @@ -110,9 +110,7 @@ class Builder implements LoggerAwareInterface $this->buildLogger = new BuildLogger($logger, $build); - $pluginFactory = $this->buildPluginFactory($build); - $pluginFactory->addConfigFromFile(APP_DIR . "pluginconfig.php"); - $this->pluginExecutor = new Plugin\Util\Executor($pluginFactory, $this->buildLogger); + $this->pluginExecutor = new Plugin\Util\Executor($this, $build, $this->buildLogger); $executorClass = 'PHPCensor\Helper\UnixCommandExecutor'; if (IS_WIN) { @@ -391,52 +389,4 @@ class Builder implements LoggerAwareInterface { $this->buildLogger->logDebug($message); } - - /** - * Returns a configured instance of the plugin factory. - * - * @param Build $build - * @return PluginFactory - */ - private function buildPluginFactory(Build $build) - { - $pluginFactory = new PluginFactory(); - - $self = $this; - $pluginFactory->registerResource( - function () use ($self) { - return $self; - }, - null, - 'PHPCensor\Builder' - ); - - $pluginFactory->registerResource( - function () use ($build) { - return $build; - }, - null, - 'PHPCensor\Model\Build' - ); - - $logger = $this->logger; - $pluginFactory->registerResource( - function () use ($logger) { - return $logger; - }, - null, - 'Psr\Log\LoggerInterface' - ); - - $pluginFactory->registerResource( - function () use ($self) { - $factory = new MailerFactory($self->getSystemConfig('php-censor')); - return $factory->getSwiftMailerFromConfig(); - }, - null, - 'Swift_Mailer' - ); - - return $pluginFactory; - } } diff --git a/src/PHPCensor/Plugin.php b/src/PHPCensor/Plugin.php index d360545f..0b2824fb 100644 --- a/src/PHPCensor/Plugin.php +++ b/src/PHPCensor/Plugin.php @@ -9,11 +9,46 @@ namespace PHPCensor; +use PHPCI\Model\Build; + /** -* PHPCI Plugin Interface - Used by all build plugins. +* PHPCI Plugin class - Used by all build plugins. + * * @author Dan Cryer */ -interface Plugin +abstract class Plugin { - public function execute(); + /** + * @var \PHPCI\Builder + */ + protected $phpci; + + /** + * @var \PHPCI\Model\Build + */ + protected $build; + + /** + * @var array + */ + protected $options; + + /** + * @param Builder $phpci + * @param Build $build + * @param array $options + */ + public function __construct(Builder $phpci, Build $build, array $options = []) + { + $this->phpci = $phpci; + $this->build = $build; + $this->options = $options; + + $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + } + + /** + * @return boolean + */ + abstract public function execute(); } diff --git a/src/PHPCensor/Plugin/Atoum.php b/src/PHPCensor/Plugin/Atoum.php index d3c880d8..42b4de0a 100644 --- a/src/PHPCensor/Plugin/Atoum.php +++ b/src/PHPCensor/Plugin/Atoum.php @@ -16,24 +16,22 @@ use PHPCensor\Plugin; /** * Atoum plugin, runs Atoum tests within a project. + * * @package PHPCensor\Plugin */ -class Atoum implements Plugin +class Atoum extends Plugin { - private $args; - private $config; - private $directory; + protected $executable; + protected $args; + protected $config; + protected $directory; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); if (isset($options['executable'])) { $this->executable = $this->phpci->buildPath . DIRECTORY_SEPARATOR.$options['executable']; diff --git a/src/PHPCensor/Plugin/Behat.php b/src/PHPCensor/Plugin/Behat.php index bee4f22b..01fbb5ad 100644 --- a/src/PHPCensor/Plugin/Behat.php +++ b/src/PHPCensor/Plugin/Behat.php @@ -17,32 +17,23 @@ use PHPCensor\Plugin; /** * Behat BDD Plugin + * * @author Dan Cryer * @package PHPCI * @subpackage Plugins */ -class Behat implements Plugin +class Behat extends Plugin { - protected $phpci; - protected $build; protected $features; + protected $executable; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->features = ''; if (isset($options['executable'])) { @@ -54,8 +45,6 @@ class Behat implements Plugin if (!empty($options['features'])) { $this->features = $options['features']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** @@ -63,7 +52,7 @@ class Behat implements Plugin */ public function execute() { - $curdir = getcwd(); + $current_dir = getcwd(); chdir($this->phpci->buildPath); $behat = $this->executable; @@ -75,7 +64,7 @@ class Behat implements Plugin } $success = $this->phpci->executeCommand($behat . ' %s', $this->features); - chdir($curdir); + chdir($current_dir); list($errorCount, $data) = $this->parseBehatOutput(); diff --git a/src/PHPCensor/Plugin/Campfire.php b/src/PHPCensor/Plugin/Campfire.php index 2bacf8fb..1e4ac6c4 100644 --- a/src/PHPCensor/Plugin/Campfire.php +++ b/src/PHPCensor/Plugin/Campfire.php @@ -21,31 +21,28 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Campfire implements Plugin +class Campfire extends Plugin { - private $url; - private $authToken; - private $userAgent; - private $cookie; - private $verbose; - private $roomId; + protected $url; + protected $authToken; + protected $userAgent; + protected $cookie; + protected $verbose; + protected $roomId; + protected $message; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - * @throws \Exception + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->message = $options['message']; $this->userAgent = "PHP Censor/1.0"; $this->cookie = "php-censor-cookie"; - $buildSettings = $phpci->getConfig('build_settings'); + $buildSettings = $this->phpci->getConfig('build_settings'); if (isset($buildSettings['campfire'])) { $campfire = $buildSettings['campfire']; diff --git a/src/PHPCensor/Plugin/CleanBuild.php b/src/PHPCensor/Plugin/CleanBuild.php index a9273b12..47e2aa68 100644 --- a/src/PHPCensor/Plugin/CleanBuild.php +++ b/src/PHPCensor/Plugin/CleanBuild.php @@ -20,31 +20,18 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class CleanBuild implements Plugin +class CleanBuild extends Plugin { protected $remove; - protected $phpci; - protected $build; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->remove = isset($options['remove']) && is_array($options['remove']) ? $options['remove'] : []; + parent::__construct($phpci, $build, $options); - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + $this->remove = isset($options['remove']) && is_array($options['remove']) ? $options['remove'] : []; } /** diff --git a/src/PHPCensor/Plugin/Codeception.php b/src/PHPCensor/Plugin/Codeception.php index 9892c8da..106711c0 100644 --- a/src/PHPCensor/Plugin/Codeception.php +++ b/src/PHPCensor/Plugin/Codeception.php @@ -25,17 +25,11 @@ use PHPCensor\ZeroConfigPlugin; * @package PHPCI * @subpackage Plugins */ -class Codeception implements Plugin, ZeroConfigPlugin +class Codeception extends Plugin implements ZeroConfigPlugin { /** @var string */ protected $args = ''; - /** @var Builder */ - protected $phpci; - - /** @var Build */ - protected $build; - /** * @var string $ymlConfigFile The path of a yml config for Codeception */ @@ -46,6 +40,28 @@ class Codeception implements Plugin, ZeroConfigPlugin */ protected $path; + /** + * {@inheritdoc} + */ + public function __construct(Builder $phpci, Build $build, array $options = []) + { + parent::__construct($phpci, $build, $options); + + $this->path = 'tests' . DIRECTORY_SEPARATOR . '_output' . DIRECTORY_SEPARATOR; + + if (empty($options['config'])) { + $this->ymlConfigFile = self::findConfigFile($this->phpci->buildPath); + } else { + $this->ymlConfigFile = $options['config']; + } + if (isset($options['args'])) { + $this->args = (string) $options['args']; + } + if (isset($options['path'])) { + $this->path = $options['path']; + } + } + /** * @param $stage * @param Builder $builder @@ -75,33 +91,6 @@ class Codeception implements Plugin, ZeroConfigPlugin return null; } - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->path = 'tests' . DIRECTORY_SEPARATOR . '_output' . DIRECTORY_SEPARATOR; - - if (empty($options['config'])) { - $this->ymlConfigFile = self::findConfigFile($this->phpci->buildPath); - } else { - $this->ymlConfigFile = $options['config']; - } - if (isset($options['args'])) { - $this->args = (string) $options['args']; - } - if (isset($options['path'])) { - $this->path = $options['path']; - } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - /** * Runs Codeception tests */ @@ -125,18 +114,18 @@ class Codeception implements Plugin, ZeroConfigPlugin { $this->phpci->logExecOutput(false); - $codecept = $this->phpci->findBinary('codecept'); + $codeception = $this->phpci->findBinary('codecept'); - if (!$codecept) { + if (!$codeception) { $this->phpci->logFailure(Lang::get('could_not_find', 'codecept')); return false; } - $cmd = 'cd "%s" && ' . $codecept . ' run -c "%s" --xml ' . $this->args; + $cmd = 'cd "%s" && ' . $codeception . ' run -c "%s" --xml ' . $this->args; if (IS_WIN) { - $cmd = 'cd /d "%s" && ' . $codecept . ' run -c "%s" --xml ' . $this->args; + $cmd = 'cd /d "%s" && ' . $codeception . ' run -c "%s" --xml ' . $this->args; } $configPath = $this->phpci->buildPath . $configPath; diff --git a/src/PHPCensor/Plugin/Composer.php b/src/PHPCensor/Plugin/Composer.php index 553d07f3..fad5a992 100644 --- a/src/PHPCensor/Plugin/Composer.php +++ b/src/PHPCensor/Plugin/Composer.php @@ -12,6 +12,8 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * Composer Plugin - Provides access to Composer functionality. @@ -19,46 +21,23 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Composer implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class Composer extends Plugin implements ZeroConfigPlugin { protected $directory; protected $action; protected $preferDist; - protected $phpci; - protected $build; protected $nodev; protected $ignorePlatformReqs; protected $preferSource; /** - * Check if this plugin can be executed. - * @param $stage - * @param Builder $builder - * @param Build $build - * @return bool - */ - public static function canExecute($stage, Builder $builder, Build $build) - { - $path = $builder->buildPath . DIRECTORY_SEPARATOR . 'composer.json'; - - if (file_exists($path) && $stage == 'setup') { - return true; - } - - return false; - } - - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; $this->directory = $path; $this->action = 'install'; $this->preferDist = false; @@ -90,8 +69,24 @@ class Composer implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin if (array_key_exists('ignore_platform_reqs', $options)) { $this->ignorePlatformReqs = (bool)$options['ignore_platform_reqs']; } + } - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + /** + * Check if this plugin can be executed. + * @param $stage + * @param Builder $builder + * @param Build $build + * @return bool + */ + public static function canExecute($stage, Builder $builder, Build $build) + { + $path = $builder->buildPath . DIRECTORY_SEPARATOR . 'composer.json'; + + if (file_exists($path) && $stage == 'setup') { + return true; + } + + return false; } /** diff --git a/src/PHPCensor/Plugin/CopyBuild.php b/src/PHPCensor/Plugin/CopyBuild.php index f87b41c3..44087de9 100644 --- a/src/PHPCensor/Plugin/CopyBuild.php +++ b/src/PHPCensor/Plugin/CopyBuild.php @@ -20,30 +20,23 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class CopyBuild implements Plugin +class CopyBuild extends Plugin { protected $directory; protected $ignore; protected $wipe; - protected $phpci; - protected $build; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; $this->directory = isset($options['directory']) ? $options['directory'] : $path; $this->wipe = isset($options['wipe']) ? (bool)$options['wipe'] : false; $this->ignore = isset($options['respect_ignore']) ? (bool)$options['respect_ignore'] : false; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Deployer.php b/src/PHPCensor/Plugin/Deployer.php index a11482bf..07391a55 100644 --- a/src/PHPCensor/Plugin/Deployer.php +++ b/src/PHPCensor/Plugin/Deployer.php @@ -20,24 +20,20 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Deployer implements Plugin +class Deployer extends Plugin { protected $webhookUrl; protected $reason; protected $updateOnly; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->reason = 'PHP Censor Build #%BUILD% - %COMMIT_MESSAGE%'; + parent::__construct($phpci, $build, $options); + $this->reason = 'PHP Censor Build #%BUILD% - %COMMIT_MESSAGE%'; if (isset($options['webhook_url'])) { $this->webhookUrl = $options['webhook_url']; } @@ -45,7 +41,7 @@ class Deployer implements Plugin if (isset($options['reason'])) { $this->reason = $options['reason']; } - + $this->updateOnly = isset($options['update_only']) ? (bool) $options['update_only'] : true; } diff --git a/src/PHPCensor/Plugin/Email.php b/src/PHPCensor/Plugin/Email.php index ae535b80..b13e2116 100644 --- a/src/PHPCensor/Plugin/Email.php +++ b/src/PHPCensor/Plugin/Email.php @@ -26,38 +26,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Email implements Plugin +class Email extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - - /** - * @var array - */ - protected $options; - - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->options = $options; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - /** * Send a notification mail. * diff --git a/src/PHPCensor/Plugin/Env.php b/src/PHPCensor/Plugin/Env.php index 1b8771ad..b623419c 100644 --- a/src/PHPCensor/Plugin/Env.php +++ b/src/PHPCensor/Plugin/Env.php @@ -20,34 +20,17 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Env implements Plugin +class Env extends Plugin { - protected $phpci; - protected $build; protected $env_vars; - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->env_vars = $options; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - /** * Adds the specified environment variables to the builder environment */ public function execute() { $success = true; - foreach ($this->env_vars as $key => $value) { + foreach ($this->options as $key => $value) { if (is_numeric($key)) { // This allows the developer to specify env vars like " - FOO=bar" or " - FOO: bar" $env_var = is_array($value)? key($value).'='.current($value): $value; diff --git a/src/PHPCensor/Plugin/FlowdockNotify.php b/src/PHPCensor/Plugin/FlowdockNotify.php index 44faca51..98c365e2 100644 --- a/src/PHPCensor/Plugin/FlowdockNotify.php +++ b/src/PHPCensor/Plugin/FlowdockNotify.php @@ -20,30 +20,28 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class FlowdockNotify implements Plugin +class FlowdockNotify extends Plugin { - private $api_key; - private $email; + protected $api_key; + protected $email; + protected $message; + const MESSAGE_DEFAULT = 'Build %BUILD% has finished for commit %SHORT_COMMIT% (%COMMIT_EMAIL%)> on branch %BRANCH%'; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - * @throws \Exception + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + if (!is_array($options) || !isset($options['api_key'])) { throw new \Exception('Please define the api_key for Flowdock Notify plugin!'); } $this->api_key = trim($options['api_key']); $this->message = isset($options['message']) ? $options['message'] : self::MESSAGE_DEFAULT; - $this->email = isset($options['email']) ? $options['email'] : 'PHP Censor'; + $this->email = isset($options['email']) ? $options['email'] : 'PHP Censor'; } /** diff --git a/src/PHPCensor/Plugin/Git.php b/src/PHPCensor/Plugin/Git.php index 552a7d5e..848d8861 100644 --- a/src/PHPCensor/Plugin/Git.php +++ b/src/PHPCensor/Plugin/Git.php @@ -20,27 +20,10 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Git implements Plugin +class Git extends Plugin { - protected $phpci; - protected $build; protected $actions = []; - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->actions = $options; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - /** * Run the Git plugin. * @return bool diff --git a/src/PHPCensor/Plugin/Grunt.php b/src/PHPCensor/Plugin/Grunt.php index 3a4f9762..f7e49a85 100644 --- a/src/PHPCensor/Plugin/Grunt.php +++ b/src/PHPCensor/Plugin/Grunt.php @@ -19,36 +19,25 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Grunt implements Plugin +class Grunt extends Plugin { protected $directory; protected $task; protected $preferDist; - protected $phpci; - protected $build; protected $grunt; protected $gruntfile; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->build = $build; - $this->phpci = $phpci; + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; $this->directory = $path; - $this->task = null; - $this->grunt = $this->phpci->findBinary('grunt'); + $this->task = null; + $this->grunt = $this->phpci->findBinary('grunt'); $this->gruntfile = 'Gruntfile.js'; // Handle options: @@ -67,8 +56,6 @@ class Grunt implements Plugin if (isset($options['gruntfile'])) { $this->gruntfile = $options['gruntfile']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Gulp.php b/src/PHPCensor/Plugin/Gulp.php index 17e2319e..2ea6665b 100644 --- a/src/PHPCensor/Plugin/Gulp.php +++ b/src/PHPCensor/Plugin/Gulp.php @@ -19,37 +19,26 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Gulp implements Plugin +class Gulp extends Plugin { protected $directory; protected $task; protected $preferDist; - protected $phpci; - protected $build; protected $gulp; protected $gulpfile; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->build = $build; - $this->phpci = $phpci; + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; $this->directory = $path; - $this->task = null; - $this->gulp = $this->phpci->findBinary('gulp'); - $this->gulpfile = 'gulpfile.js'; + $this->task = null; + $this->gulp = $this->phpci->findBinary('gulp'); + $this->gulpfile = 'gulpfile.js'; // Handle options: if (isset($options['directory'])) { @@ -67,8 +56,6 @@ class Gulp implements Plugin if (isset($options['gulpfile'])) { $this->gulpfile = $options['gulpfile']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/HipchatNotify.php b/src/PHPCensor/Plugin/HipchatNotify.php index bb0e1fc8..21196bf4 100644 --- a/src/PHPCensor/Plugin/HipchatNotify.php +++ b/src/PHPCensor/Plugin/HipchatNotify.php @@ -21,26 +21,25 @@ use HipChat\HipChat; * @package PHPCI * @subpackage Plugins */ -class HipchatNotify implements Plugin +class HipchatNotify extends Plugin { protected $authToken; protected $color; protected $notify; + protected $userAgent; + protected $cookie; + protected $message; + protected $room; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - * @throws \Exception + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); $this->userAgent = "PHP Censor/1.0"; - $this->cookie = "php-censor-cookie"; + $this->cookie = "php-censor-cookie"; if (is_array($options) && isset($options['authToken']) && isset($options['room'])) { $this->authToken = $options['authToken']; diff --git a/src/PHPCensor/Plugin/Irc.php b/src/PHPCensor/Plugin/Irc.php index 561864ac..4887793d 100644 --- a/src/PHPCensor/Plugin/Irc.php +++ b/src/PHPCensor/Plugin/Irc.php @@ -20,10 +20,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Irc implements Plugin +class Irc extends Plugin { - protected $phpci; - protected $build; protected $message; protected $server; protected $port; @@ -31,36 +29,23 @@ class Irc implements Plugin protected $nick; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->message = $options['message']; - - $buildSettings = $phpci->getConfig('build_settings'); - + $buildSettings = $this->phpci->getConfig('build_settings'); if (isset($buildSettings['irc'])) { $irc = $buildSettings['irc']; $this->server = $irc['server']; - $this->port = $irc['port']; - $this->room = $irc['room']; - $this->nick = $irc['nick']; + $this->port = $irc['port']; + $this->room = $irc['room']; + $this->nick = $irc['nick']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Lint.php b/src/PHPCensor/Plugin/Lint.php index 6f497bef..71a0dd17 100644 --- a/src/PHPCensor/Plugin/Lint.php +++ b/src/PHPCensor/Plugin/Lint.php @@ -12,6 +12,7 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; /** * PHP Lint Plugin - Provides access to PHP lint functionality. @@ -19,32 +20,21 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class Lint implements PHPCensor\Plugin +class Lint extends Plugin { protected $directories; protected $recursive = true; protected $ignore; - protected $phpci; - protected $build; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->directories = ['']; - $this->ignore = $phpci->ignore; + $this->ignore = $this->phpci->ignore; if (!empty($options['directory'])) { $this->directories[] = $options['directory']; @@ -57,8 +47,6 @@ class Lint implements PHPCensor\Plugin if (array_key_exists('recursive', $options)) { $this->recursive = $options['recursive']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** @@ -67,7 +55,7 @@ class Lint implements PHPCensor\Plugin public function execute() { $this->phpci->quiet = true; - $success = true; + $success = true; $php = $this->phpci->findBinary('php'); diff --git a/src/PHPCensor/Plugin/Mysql.php b/src/PHPCensor/Plugin/Mysql.php index 722de944..130141c4 100644 --- a/src/PHPCensor/Plugin/Mysql.php +++ b/src/PHPCensor/Plugin/Mysql.php @@ -23,23 +23,8 @@ use b8\Database; * @package PHPCI * @subpackage Plugins */ -class Mysql implements Plugin +class Mysql extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - - /** - * @var array - */ - protected $queries = []; - /** * @var string */ @@ -56,16 +41,11 @@ class Mysql implements Plugin protected $pass; /** - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - - $this->queries = $options; + parent::__construct($phpci, $build, $options); $config = Database::getConnection('write')->getDetails(); @@ -73,7 +53,7 @@ class Mysql implements Plugin $this->user = $config['user']; $this->pass = $config['pass']; - $buildSettings = $phpci->getConfig('build_settings'); + $buildSettings = $this->phpci->getConfig('build_settings'); if (!isset($buildSettings['mysql'])) { return; @@ -90,8 +70,6 @@ class Mysql implements Plugin if (array_key_exists('pass', $buildSettings['mysql'])) { $this->pass = $buildSettings['mysql']['pass']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** @@ -104,7 +82,7 @@ class Mysql implements Plugin $opts = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; $pdo = new PDO('mysql:host=' . $this->host, $this->user, $this->pass, $opts); - foreach ($this->queries as $query) { + foreach ($this->options as $query) { if (!is_array($query)) { // Simple query $pdo->query($this->phpci->interpolate($query)); diff --git a/src/PHPCensor/Plugin/PackageBuild.php b/src/PHPCensor/Plugin/PackageBuild.php index 65a1e333..5965d714 100644 --- a/src/PHPCensor/Plugin/PackageBuild.php +++ b/src/PHPCensor/Plugin/PackageBuild.php @@ -19,29 +19,23 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class PackageBuild implements Plugin +class PackageBuild extends Plugin { protected $directory; protected $filename; protected $format; - protected $phpci; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->build = $build; - $this->phpci = $phpci; + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; $this->directory = isset($options['directory']) ? $options['directory'] : $path; $this->filename = isset($options['filename']) ? $options['filename'] : 'build'; $this->format = isset($options['format']) ? $options['format'] : 'zip'; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Pdepend.php b/src/PHPCensor/Plugin/Pdepend.php index 952c0bf0..43480ab1 100644 --- a/src/PHPCensor/Plugin/Pdepend.php +++ b/src/PHPCensor/Plugin/Pdepend.php @@ -19,29 +19,30 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Pdepend implements Plugin +class Pdepend extends Plugin { protected $args; - /** - * @var \PHPCensor\Builder - */ - protected $phpci; + /** * @var string Directory which needs to be scanned */ protected $directory; + /** * @var string File where the summary.xml is stored */ protected $summary; + /** * @var string File where the chart.svg is stored */ protected $chart; + /** * @var string File where the pyramid.svg is stored */ protected $pyramid; + /** * @var string Location on the server where the files are stored. Preferably in the webroot for inclusion * in the readme.md of the repository @@ -49,25 +50,19 @@ class Pdepend implements Plugin protected $location; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); - $this->directory = isset($options['directory']) ? $options['directory'] : $phpci->buildPath; + $this->directory = isset($options['directory']) ? $options['directory'] : $this->phpci->buildPath; - $title = $phpci->getBuildProjectTitle(); + $title = $this->phpci->getBuildProjectTitle(); $this->summary = $title . '-summary.xml'; $this->pyramid = $title . '-pyramid.svg'; $this->chart = $title . '-chart.svg'; $this->location = $this->phpci->buildPath . '..' . DIRECTORY_SEPARATOR . 'pdepend'; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Pgsql.php b/src/PHPCensor/Plugin/Pgsql.php index 984c8768..f527f21d 100644 --- a/src/PHPCensor/Plugin/Pgsql.php +++ b/src/PHPCensor/Plugin/Pgsql.php @@ -20,23 +20,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Pgsql implements Plugin +class Pgsql extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - - /** - * @var array - */ - protected $queries = []; - /** * @var string */ @@ -53,17 +38,13 @@ class Pgsql implements Plugin protected $pass; /** - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->queries = $options; + parent::__construct($phpci, $build, $options); - $buildSettings = $phpci->getConfig('build_settings'); + $buildSettings = $this->phpci->getConfig('build_settings'); if (isset($buildSettings['pgsql'])) { $sql = $buildSettings['pgsql']; @@ -71,8 +52,6 @@ class Pgsql implements Plugin $this->user = $sql['user']; $this->pass = $sql['pass']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** @@ -85,7 +64,7 @@ class Pgsql implements Plugin $opts = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; $pdo = new PDO('pgsql:host=' . $this->host, $this->user, $this->pass, $opts); - foreach ($this->queries as $query) { + foreach ($this->options as $query) { $pdo->query($this->phpci->interpolate($query)); } } catch (\Exception $ex) { diff --git a/src/PHPCensor/Plugin/Phar.php b/src/PHPCensor/Plugin/Phar.php index 1c1e4df6..4502c0a8 100644 --- a/src/PHPCensor/Plugin/Phar.php +++ b/src/PHPCensor/Plugin/Phar.php @@ -12,20 +12,8 @@ use PHPCensor\Plugin; /** * Phar Plugin */ -class Phar implements Plugin +class Phar extends Plugin { - /** - * PHPCI - * @var Builder - */ - protected $phpci; - - /** - * Build - * @var Build - */ - protected $build; - /** * Output Directory * @var string @@ -51,22 +39,11 @@ class Phar implements Plugin protected $stub; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - // Basic - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); // Directory? if (isset($options['directory'])) { @@ -87,28 +64,6 @@ class Phar implements Plugin if (isset($options['stub'])) { $this->setStub($options['stub']); } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - - /** - * Returns PHPCI - * - * @return Builder - */ - public function getPHPCI() - { - return $this->phpci; - } - - /** - * Returns Build - * - * @return Build - */ - public function getBuild() - { - return $this->build; } /** @@ -131,7 +86,7 @@ class Phar implements Plugin public function getDirectory() { if (!isset($this->directory)) { - $this->setDirectory($this->getPHPCI()->buildPath); + $this->setDirectory($this->phpci->buildPath); } return $this->directory; } @@ -217,7 +172,7 @@ class Phar implements Plugin $content = ''; $filename = $this->getStub(); if ($filename) { - $content = file_get_contents($this->getPHPCI()->buildPath . DIRECTORY_SEPARATOR . $this->getStub()); + $content = file_get_contents($this->phpci->buildPath . DIRECTORY_SEPARATOR . $this->getStub()); } return $content; } @@ -233,7 +188,7 @@ class Phar implements Plugin try { $file = $this->getDirectory() . DIRECTORY_SEPARATOR . $this->getFilename(); $phar = new PHPPhar($file, 0, $this->getFilename()); - $phar->buildFromDirectory($this->getPHPCI()->buildPath, $this->getRegExp()); + $phar->buildFromDirectory($this->phpci->buildPath, $this->getRegExp()); $stub = $this->getStubContent(); if ($stub) { @@ -242,8 +197,8 @@ class Phar implements Plugin $success = true; } catch (Exception $e) { - $this->getPHPCI()->log(Lang::get('phar_internal_error')); - $this->getPHPCI()->log($e->getMessage()); + $this->phpci->log(Lang::get('phar_internal_error')); + $this->phpci->log($e->getMessage()); } return $success; diff --git a/src/PHPCensor/Plugin/Phing.php b/src/PHPCensor/Plugin/Phing.php index 4db6606a..82ac794e 100644 --- a/src/PHPCensor/Plugin/Phing.php +++ b/src/PHPCensor/Plugin/Phing.php @@ -21,36 +21,29 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Phing implements Plugin +class Phing extends Plugin { - private $directory; - private $buildFile = 'build.xml'; - private $targets = ['build']; - private $properties = []; - private $propertyFile; - - protected $phpci; - protected $build; + protected $directory; + protected $buildFile = 'build.xml'; + protected $targets = ['build']; + protected $properties = []; + protected $propertyFile; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->setPhpci($phpci); - $this->build = $build; + parent::__construct($phpci, $build, $options); /* * Set working directory */ if (isset($options['directory'])) { - $directory = $phpci->buildPath . DIRECTORY_SEPARATOR . $options['directory']; + $directory = $this->phpci->buildPath . DIRECTORY_SEPARATOR . $options['directory']; } else { - $directory = $phpci->buildPath; + $directory = $this->phpci->buildPath; } $this->setDirectory($directory); @@ -97,24 +90,6 @@ class Phing implements Plugin return $this->phpci->executeCommand(implode(' ', $cmd), $this->directory, $this->targets); } - /** - * @return \PHPCensor\Builder - */ - public function getPhpci() - { - return $this->phpci; - } - - /** - * @param \PHPCensor\Builder $phpci - * - * @return $this - */ - public function setPhpci($phpci) - { - $this->phpci = $phpci; - } - /** * @return string */ diff --git a/src/PHPCensor/Plugin/PhpCodeSniffer.php b/src/PHPCensor/Plugin/PhpCodeSniffer.php index 3b9bfd43..2557ac7e 100644 --- a/src/PHPCensor/Plugin/PhpCodeSniffer.php +++ b/src/PHPCensor/Plugin/PhpCodeSniffer.php @@ -13,6 +13,8 @@ use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; use PHPCensor\Model\BuildError; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * PHP Code Sniffer Plugin - Allows PHP Code Sniffer testing. @@ -20,13 +22,8 @@ use PHPCensor\Model\BuildError; * @package PHPCI * @subpackage Plugins */ -class PhpCodeSniffer implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class PhpCodeSniffer extends Plugin implements ZeroConfigPlugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - /** * @var array */ @@ -74,43 +71,25 @@ class PhpCodeSniffer implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin protected $ignore; /** - * Check if this plugin can be executed. - * @param $stage - * @param Builder $builder - * @param Build $build - * @return bool - */ - public static function canExecute($stage, Builder $builder, Build $build) - { - if ($stage == 'test') { - return true; - } - - return false; - } - - /** - * @param \PHPCensor\Builder $phpci - * @param \PHPCensor\Model\Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->suffixes = ['php']; - $this->directory = $phpci->buildPath; - $this->standard = 'PSR2'; - $this->tab_width = ''; - $this->encoding = ''; - $this->path = ''; - $this->ignore = $this->phpci->ignore; + parent::__construct($phpci, $build, $options); + + $this->suffixes = ['php']; + $this->directory = $this->phpci->buildPath; + $this->standard = 'PSR2'; + $this->tab_width = ''; + $this->encoding = ''; + $this->path = ''; + $this->ignore = $this->phpci->ignore; $this->allowed_warnings = 0; - $this->allowed_errors = 0; + $this->allowed_errors = 0; if (isset($options['zero_config']) && $options['zero_config']) { $this->allowed_warnings = -1; - $this->allowed_errors = -1; + $this->allowed_errors = -1; } if (isset($options['suffixes'])) { @@ -124,23 +103,22 @@ class PhpCodeSniffer implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin if (!empty($options['encoding'])) { $this->encoding = ' --encoding=' . $options['encoding']; } - - $this->setOptions($options); - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** - * Handle this plugin's options. - * @param $options + * Check if this plugin can be executed. + * @param $stage + * @param Builder $builder + * @param Build $build + * @return bool */ - protected function setOptions($options) + public static function canExecute($stage, Builder $builder, Build $build) { - foreach (['directory', 'standard', 'path', 'ignore', 'allowed_warnings', 'allowed_errors'] as $key) { - if (array_key_exists($key, $options)) { - $this->{$key} = $options[$key]; - } + if ($stage == 'test') { + return true; } + + return false; } /** diff --git a/src/PHPCensor/Plugin/PhpCpd.php b/src/PHPCensor/Plugin/PhpCpd.php index e075f6fb..3b77fa68 100644 --- a/src/PHPCensor/Plugin/PhpCpd.php +++ b/src/PHPCensor/Plugin/PhpCpd.php @@ -21,12 +21,10 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class PhpCpd implements Plugin +class PhpCpd extends Plugin { protected $directory; protected $args; - protected $phpci; - protected $build; /** * @var string, based on the assumption the root may not hold the code to be @@ -40,28 +38,22 @@ class PhpCpd implements Plugin protected $ignore; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); - $this->path = $phpci->buildPath; - $this->ignore = $phpci->ignore; + $this->path = $this->phpci->buildPath; + $this->ignore = $this->phpci->ignore; if (!empty($options['path'])) { - $this->path = $phpci->buildPath . $options['path']; + $this->path = $this->phpci->buildPath . $options['path']; } - + if (!empty($options['ignore'])) { $this->ignore = $options['ignore']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/PhpCsFixer.php b/src/PHPCensor/Plugin/PhpCsFixer.php index c61edcef..c317db34 100644 --- a/src/PHPCensor/Plugin/PhpCsFixer.php +++ b/src/PHPCensor/Plugin/PhpCsFixer.php @@ -19,45 +19,23 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class PhpCsFixer implements Plugin +class PhpCsFixer extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - protected $workingDir = ''; protected $level = ' --level=psr2'; protected $verbose = ''; protected $diff = ''; - protected $levels = array('psr0', 'psr1', 'psr2', 'symfony'); + protected $levels = ['psr0', 'psr1', 'psr2', 'symfony']; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); - $this->workingdir = $this->phpci->buildPath; + $this->workingDir = $this->phpci->buildPath; $this->buildArgs($options); - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** @@ -67,7 +45,7 @@ class PhpCsFixer implements Plugin public function execute() { $curdir = getcwd(); - chdir($this->workingdir); + chdir($this->workingDir); $phpcsfixer = $this->phpci->findBinary('php-cs-fixer'); @@ -98,7 +76,7 @@ class PhpCsFixer implements Plugin } if (isset($options['workingdir']) && $options['workingdir']) { - $this->workingdir = $this->phpci->buildPath . $options['workingdir']; + $this->workingDir = $this->phpci->buildPath . $options['workingdir']; } } diff --git a/src/PHPCensor/Plugin/PhpDocblockChecker.php b/src/PHPCensor/Plugin/PhpDocblockChecker.php index f575bdc7..b4711749 100644 --- a/src/PHPCensor/Plugin/PhpDocblockChecker.php +++ b/src/PHPCensor/Plugin/PhpDocblockChecker.php @@ -12,6 +12,8 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * PHP Docblock Checker Plugin - Checks your PHP files for appropriate uses of Docblocks @@ -19,18 +21,8 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpDocblockChecker implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - /** * @var string Based on the assumption the root may not hold the code to be * tested, extends the build path. @@ -44,34 +36,16 @@ class PhpDocblockChecker implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin protected $skipClasses = false; protected $skipMethods = false; + protected $allowed_warnings; /** - * Check if this plugin can be executed. - * @param $stage - * @param Builder $builder - * @param Build $build - * @return bool - */ - public static function canExecute($stage, Builder $builder, Build $build) - { - if ($stage == 'test') { - return true; - } - - return false; - } - - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->ignore = $phpci->ignore; + parent::__construct($phpci, $build, $options); + + $this->ignore = $this->phpci->ignore; $this->path = ''; $this->allowed_warnings = 0; @@ -94,8 +68,22 @@ class PhpDocblockChecker implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin if (array_key_exists('allowed_warnings', $options)) { $this->allowed_warnings = (int)$options['allowed_warnings']; } + } - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + /** + * Check if this plugin can be executed. + * @param $stage + * @param Builder $builder + * @param Build $build + * @return bool + */ + public static function canExecute($stage, Builder $builder, Build $build) + { + if ($stage == 'test') { + return true; + } + + return false; } /** diff --git a/src/PHPCensor/Plugin/PhpLoc.php b/src/PHPCensor/Plugin/PhpLoc.php index 400c993c..8a1dcd1d 100644 --- a/src/PHPCensor/Plugin/PhpLoc.php +++ b/src/PHPCensor/Plugin/PhpLoc.php @@ -12,6 +12,8 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * PHP Loc - Allows PHP Copy / Lines of Code testing. @@ -19,16 +21,12 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpLoc implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class PhpLoc extends Plugin implements ZeroConfigPlugin { /** * @var string */ protected $directory; - /** - * @var \PHPCensor\Builder - */ - protected $phpci; /** * Check if this plugin can be executed. @@ -47,22 +45,17 @@ class PhpLoc implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin } /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->directory = $phpci->buildPath; + parent::__construct($phpci, $build, $options); + + $this->directory = $this->phpci->buildPath; if (isset($options['directory'])) { $this->directory .= $options['directory']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/PhpMessDetector.php b/src/PHPCensor/Plugin/PhpMessDetector.php index ecbc7d36..11f55ff3 100644 --- a/src/PHPCensor/Plugin/PhpMessDetector.php +++ b/src/PHPCensor/Plugin/PhpMessDetector.php @@ -12,6 +12,8 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * PHP Mess Detector Plugin - Allows PHP Mess Detector testing. @@ -19,18 +21,8 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpMessDetector implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class PhpMessDetector extends Plugin implements ZeroConfigPlugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - /** * @var array */ @@ -54,43 +46,19 @@ class PhpMessDetector implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin * @var array */ protected $rules; + protected $allowed_warnings; /** - * Check if this plugin can be executed. - * @param $stage - * @param Builder $builder - * @param Build $build - * @return bool - */ - public static function canExecute($stage, Builder $builder, Build $build) - { - if ($stage == 'test') { - return true; - } - - return false; - } - - /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->suffixes = ['php']; - $this->ignore = $phpci->ignore; - $this->path = ''; - $this->rules = ['codesize', 'unusedcode', 'naming']; + parent::__construct($phpci, $build, $options); + + $this->suffixes = ['php']; + $this->ignore = $this->phpci->ignore; + $this->path = ''; + $this->rules = ['codesize', 'unusedcode', 'naming']; $this->allowed_warnings = 0; if (isset($options['zero_config']) && $options['zero_config']) { @@ -108,8 +76,22 @@ class PhpMessDetector implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin foreach (['rules', 'ignore', 'suffixes'] as $key) { $this->overrideSetting($options, $key); } + } - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + /** + * Check if this plugin can be executed. + * @param $stage + * @param Builder $builder + * @param Build $build + * @return bool + */ + public static function canExecute($stage, Builder $builder, Build $build) + { + if ($stage == 'test') { + return true; + } + + return false; } /** diff --git a/src/PHPCensor/Plugin/PhpParallelLint.php b/src/PHPCensor/Plugin/PhpParallelLint.php index 92fd9dfd..f495e0cd 100644 --- a/src/PHPCensor/Plugin/PhpParallelLint.php +++ b/src/PHPCensor/Plugin/PhpParallelLint.php @@ -19,18 +19,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class PhpParallelLint implements Plugin +class PhpParallelLint extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - /** * @var string */ @@ -42,33 +32,22 @@ class PhpParallelLint implements Plugin protected $ignore; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->directory = $phpci->buildPath; + parent::__construct($phpci, $build, $options); + + $this->directory = $this->phpci->buildPath; $this->ignore = $this->phpci->ignore; if (isset($options['directory'])) { - $this->directory = $phpci->buildPath.$options['directory']; + $this->directory = $this->phpci->buildPath.$options['directory']; } if (isset($options['ignore'])) { $this->ignore = $options['ignore']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/PhpSpec.php b/src/PHPCensor/Plugin/PhpSpec.php index e2cf2696..0f6d6a12 100644 --- a/src/PHPCensor/Plugin/PhpSpec.php +++ b/src/PHPCensor/Plugin/PhpSpec.php @@ -12,6 +12,7 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; /** * PHP Spec Plugin - Allows PHP Spec testing. @@ -19,38 +20,8 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpSpec implements PHPCensor\Plugin +class PhpSpec extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - - /** - * @var array - */ - protected $options; - - /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->options = $options; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - /** * Runs PHP Spec tests. */ diff --git a/src/PHPCensor/Plugin/PhpTalLint.php b/src/PHPCensor/Plugin/PhpTalLint.php index 85a1247c..3a40f9fa 100644 --- a/src/PHPCensor/Plugin/PhpTalLint.php +++ b/src/PHPCensor/Plugin/PhpTalLint.php @@ -12,6 +12,7 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; /** * PHPTAL Lint Plugin - Provides access to PHPTAL lint functionality. @@ -19,23 +20,13 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class PhpTalLint implements PHPCensor\Plugin +class PhpTalLint extends Plugin { protected $directories; protected $recursive = true; protected $suffixes; protected $ignore; - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - /** * @var string The path to a file contain custom phptal_tales_ functions */ @@ -57,19 +48,15 @@ class PhpTalLint implements PHPCensor\Plugin protected $failedPaths = []; /** - * Standard Constructor - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->directories = ['']; $this->suffixes = ['zpt']; - $this->ignore = $phpci->ignore; + $this->ignore = $this->phpci->ignore; $this->allowed_warnings = 0; $this->allowed_errors = 0; @@ -81,23 +68,6 @@ class PhpTalLint implements PHPCensor\Plugin if (isset($options['suffixes'])) { $this->suffixes = (array)$options['suffixes']; } - - $this->setOptions($options); - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - - /** - * Handle this plugin's options. - * @param $options - */ - protected function setOptions($options) - { - foreach (['directories', 'tales', 'allowed_warnings', 'allowed_errors'] as $key) { - if (array_key_exists($key, $options)) { - $this->{$key} = $options[$key]; - } - } } /** diff --git a/src/PHPCensor/Plugin/PhpUnit.php b/src/PHPCensor/Plugin/PhpUnit.php index 666ae0ff..5c8082e7 100644 --- a/src/PHPCensor/Plugin/PhpUnit.php +++ b/src/PHPCensor/Plugin/PhpUnit.php @@ -17,6 +17,8 @@ use PHPCensor\Model\Build; use PHPCensor\Model\BuildError; use PHPCensor\Plugin\Option\PhpUnitOptions; use PHPCensor\Plugin\Util\PhpUnitResult; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * PHP Unit Plugin - A rewrite of the original PHP Unit plugin @@ -26,11 +28,8 @@ use PHPCensor\Plugin\Util\PhpUnitResult; * @package PHPCI * @subpackage Plugins */ -class PhpUnit implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class PhpUnit extends Plugin implements ZeroConfigPlugin { - protected $phpci; - protected $build; - /** @var string[] Raw options from the PHPCI config file */ protected $options = array(); @@ -48,8 +47,8 @@ class PhpUnit implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin */ public function __construct(Builder $phpci, Build $build, array $options = array()) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); + $this->options = new PhpUnitOptions($options); } @@ -168,7 +167,6 @@ class PhpUnit implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin */ protected function processResults($jsonFile) { - var_dump('fuck!'); if (file_exists($jsonFile)) { $parser = new PhpUnitResult($jsonFile, $this->build->getBuildPath()); diff --git a/src/PHPCensor/Plugin/Shell.php b/src/PHPCensor/Plugin/Shell.php index b530641b..b78d4578 100644 --- a/src/PHPCensor/Plugin/Shell.php +++ b/src/PHPCensor/Plugin/Shell.php @@ -19,18 +19,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Shell implements Plugin +class Shell extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - protected $args; /** @@ -39,21 +29,11 @@ class Shell implements Plugin protected $commands = []; /** - * Standard Constructor - * - * $options['directory'] Output Directory. Default: %BUILDPATH% - * $options['filename'] Phar Filename. Default: build.phar - * $options['regexp'] Regular Expression Filename Capture. Default: /\.php$/ - * $options['stub'] Stub Content. No Default Value - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); if (isset($options['command'])) { // Keeping this for backwards compatibility, new projects should use interpolation vars. @@ -72,8 +52,6 @@ class Shell implements Plugin if (is_array($options)) { $this->commands = $options; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/SlackNotify.php b/src/PHPCensor/Plugin/SlackNotify.php index a33739c0..d1408d77 100644 --- a/src/PHPCensor/Plugin/SlackNotify.php +++ b/src/PHPCensor/Plugin/SlackNotify.php @@ -21,7 +21,7 @@ use Maknz\Slack\AttachmentField; * @package PHPCI * @subpackage Plugins */ -class SlackNotify implements Plugin +class SlackNotify extends Plugin { private $webHook; private $room; @@ -31,16 +31,11 @@ class SlackNotify implements Plugin private $show_status; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options - * @throws \Exception + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); if (is_array($options) && isset($options['webhook_url'])) { $this->webHook = trim($options['webhook_url']); diff --git a/src/PHPCensor/Plugin/Sqlite.php b/src/PHPCensor/Plugin/Sqlite.php index 7d2eae2d..6de94530 100644 --- a/src/PHPCensor/Plugin/Sqlite.php +++ b/src/PHPCensor/Plugin/Sqlite.php @@ -20,18 +20,8 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Sqlite implements Plugin +class Sqlite extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - /** * @var array */ @@ -43,23 +33,18 @@ class Sqlite implements Plugin protected $path; /** - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; - $this->queries = $options; - $buildSettings = $phpci->getConfig('build_settings'); + parent::__construct($phpci, $build, $options); + + $buildSettings = $this->phpci->getConfig('build_settings'); if (isset($buildSettings['sqlite'])) { - $sql = $buildSettings['sqlite']; + $sql = $buildSettings['sqlite']; $this->path = $sql['path']; } - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/TechnicalDebt.php b/src/PHPCensor/Plugin/TechnicalDebt.php index c1369cc0..de1d93fb 100755 --- a/src/PHPCensor/Plugin/TechnicalDebt.php +++ b/src/PHPCensor/Plugin/TechnicalDebt.php @@ -12,6 +12,8 @@ namespace PHPCensor\Plugin; use PHPCensor; use PHPCensor\Builder; use PHPCensor\Model\Build; +use PHPCensor\Plugin; +use PHPCensor\ZeroConfigPlugin; /** * Technical Debt Plugin - Checks for existence of "TODO", "FIXME", etc. @@ -20,13 +22,8 @@ use PHPCensor\Model\Build; * @package PHPCI * @subpackage Plugins */ -class TechnicalDebt implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin +class TechnicalDebt extends Plugin implements ZeroConfigPlugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - /** * @var array */ @@ -58,6 +55,28 @@ class TechnicalDebt implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin */ protected $searches; + /** + * {@inheritdoc} + */ + public function __construct(Builder $phpci, Build $build, array $options = []) + { + parent::__construct($phpci, $build, $options); + + $this->suffixes = ['php']; + $this->directory = $this->phpci->buildPath; + $this->path = ''; + $this->ignore = $this->phpci->ignore; + $this->allowed_errors = 0; + $this->searches = ['TODO', 'FIXME', 'TO DO', 'FIX ME']; + + if (isset($options['searches']) && is_array($options['searches'])) { + $this->searches = $options['searches']; + } + + if (isset($options['zero_config']) && $options['zero_config']) { + $this->allowed_errors = -1; + } + } /** * Check if this plugin can be executed. @@ -76,48 +95,6 @@ class TechnicalDebt implements PHPCensor\Plugin, PHPCensor\ZeroConfigPlugin return false; } - /** - * @param \PHPCensor\Builder $phpci - * @param \PHPCensor\Model\Build $build - * @param array $options - */ - public function __construct(Builder $phpci, Build $build, array $options = []) - { - $this->phpci = $phpci; - $this->build = $build; - $this->suffixes = ['php']; - $this->directory = $phpci->buildPath; - $this->path = ''; - $this->ignore = $this->phpci->ignore; - $this->allowed_errors = 0; - $this->searches = ['TODO', 'FIXME', 'TO DO', 'FIX ME']; - - if (isset($options['searches']) && is_array($options['searches'])) { - $this->searches = $options['searches']; - } - - if (isset($options['zero_config']) && $options['zero_config']) { - $this->allowed_errors = -1; - } - - $this->setOptions($options); - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - - /** - * Handle this plugin's options. - * @param $options - */ - protected function setOptions($options) - { - foreach (['directory', 'path', 'ignore', 'allowed_errors'] as $key) { - if (array_key_exists($key, $options)) { - $this->{$key} = $options[$key]; - } - } - } - /** * Runs the plugin */ diff --git a/src/PHPCensor/Plugin/Util/Executor.php b/src/PHPCensor/Plugin/Util/Executor.php index 884ba313..eeb9f062 100644 --- a/src/PHPCensor/Plugin/Util/Executor.php +++ b/src/PHPCensor/Plugin/Util/Executor.php @@ -8,6 +8,7 @@ use PHPCensor\Helper\Lang; use PHPCensor\Logging\BuildLogger; use PHPCensor\Model\Build; use PHPCensor\Store\BuildStore; +use PHPCensor\Builder; /** * Plugin Executor - Runs the configured plugins for a given build stage. @@ -15,6 +16,16 @@ use PHPCensor\Store\BuildStore; */ class Executor { + /** + * @var \PHPCI\Builder + */ + protected $phpci; + + /** + * @var \PHPCI\Model\Build + */ + protected $build; + /** * @var BuildLogger */ @@ -31,14 +42,16 @@ class Executor protected $store; /** - * @param Factory $pluginFactory + * @param Builder $phpci + * @param Build $build * @param BuildLogger $logger */ - public function __construct(Factory $pluginFactory, BuildLogger $logger, BuildStore $store = null) + public function __construct(Builder $phpci, Build $build, BuildLogger $logger) { - $this->pluginFactory = $pluginFactory; + $this->phpci = $phpci; + $this->build = $build; $this->logger = $logger; - $this->store = $store ?: StoreFactory::getStore('Build'); + $this->store = StoreFactory::getStore('Build'); } /** @@ -78,7 +91,7 @@ class Executor protected function getBranchSpecificPlugins(&$config, $stage, $pluginsToExecute) { /** @var \PHPCensor\Model\Build $build */ - $build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build'); + $build = $this->build; $branch = $build->getBranch(); // If we don't have any branch-specific plugins: @@ -190,10 +203,7 @@ class Executor } try { - // Build and run it - $obj = $this->pluginFactory->buildPlugin($class, $options); - - return $obj->execute(); + return (new $class($this->phpci, $this->build, $options))->execute(); } catch (\Exception $ex) { $this->logger->logFailure(Lang::get('exception') . $ex->getMessage(), $ex); @@ -235,7 +245,7 @@ class Executor private function getBuildSummary() { /** @var Build $build */ - $build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build'); + $build = $this->build; $metas = $this->store->getMeta('plugin-summary', $build->getProjectId(), $build->getId()); return isset($metas[0]['meta_value']) ? $metas[0]['meta_value'] : []; } @@ -248,7 +258,7 @@ class Executor private function setBuildSummary($summary) { /** @var Build $build */ - $build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build'); + $build = $this->build; $this->store->setMeta($build->getProjectId(), $build->getId(), 'plugin-summary', json_encode($summary)); } } diff --git a/src/PHPCensor/Plugin/Util/Factory.php b/src/PHPCensor/Plugin/Util/Factory.php deleted file mode 100644 index 7f929dbd..00000000 --- a/src/PHPCensor/Plugin/Util/Factory.php +++ /dev/null @@ -1,216 +0,0 @@ -container = $container; - } else { - $this->container = new Container(); - } - } - - /** - * Trys to get a function from the file path specified. If the - * file returns a function then $this will be passed to it. - * This enables the config file to call any public methods. - * - * @param $configPath - * @return bool - true if the function exists else false. - */ - public function addConfigFromFile($configPath) - { - // The file is expected to return a function which can - // act on the pluginFactory to register any resources needed. - if (file_exists($configPath)) { - $configFunction = require($configPath); - if (is_callable($configFunction)) { - $configFunction($this); - return true; - } - } - return false; - } - - /** - * Get most recently used factory options. - * @return mixed - */ - public function getLastOptions() - { - return $this->currentPluginOptions; - } - - /** - * Builds an instance of plugin of class $className. $options will - * be passed along with any resources registered with the factory. - * - * @param $className - * @param array|null $options - * @throws \InvalidArgumentException if $className doesn't represent a valid plugin - * @return \PHPCensor\Plugin - */ - public function buildPlugin($className, $options = []) - { - $this->currentPluginOptions = $options; - - $reflectedPlugin = new \ReflectionClass($className); - - if (!$reflectedPlugin->implementsInterface(self::INTERFACE_PLUGIN)) { - throw new \InvalidArgumentException( - "Requested class must implement " . self:: INTERFACE_PLUGIN - ); - } - - $constructor = $reflectedPlugin->getConstructor(); - - if ($constructor) { - $argsToUse = []; - foreach ($constructor->getParameters() as $param) { - if ('options' === $param->getName()) { - $argsToUse[] = $options; - } else { - $argsToUse = $this->addArgFromParam($argsToUse, $param); - } - } - $plugin = $reflectedPlugin->newInstanceArgs($argsToUse); - } else { - $plugin = $reflectedPlugin->newInstance(); - } - - return $plugin; - } - - /** - * @param callable $loader - * @param string|null $name - * @param string|null $type - * @throws \InvalidArgumentException - * @internal param mixed $resource - */ - public function registerResource( - $loader, - $name = null, - $type = null - ) { - if ($name === null && $type === null) { - throw new \InvalidArgumentException( - "Type or Name must be specified" - ); - } - - if (!($loader instanceof \Closure)) { - throw new \InvalidArgumentException( - '$loader is expected to be a function' - ); - } - - $resourceID = $this->getInternalID($type, $name); - - $this->container[$resourceID] = $loader; - } - - /** - * Get an internal resource ID. - * @param null $type - * @param null $name - * @return string - */ - private function getInternalID($type = null, $name = null) - { - $type = $type ? : ""; - $name = $name ? : ""; - return $type . "-" . $name; - } - - /** - * @param string $type - * @param string $name - * @return mixed - */ - public function getResourceFor($type = null, $name = null) - { - $fullId = $this->getInternalID($type, $name); - if (isset($this->container[$fullId])) { - return $this->container[$fullId]; - } - - $typeOnlyID = $this->getInternalID($type, null); - if (isset($this->container[$typeOnlyID])) { - return $this->container[$typeOnlyID]; - } - - $nameOnlyID = $this->getInternalID(null, $name); - if (isset($this->container[$nameOnlyID])) { - return $this->container[$nameOnlyID]; - } - - return null; - } - - /** - * @param \ReflectionParameter $param - * @return null|string - */ - private function getParamType(\ReflectionParameter $param) - { - $class = $param->getClass(); - if ($class) { - return $class->getName(); - } elseif ($param->isArray()) { - return self::TYPE_ARRAY; - } elseif (is_callable($param)) { - return self::TYPE_CALLABLE; - } else { - return null; - } - } - - /** - * @param $existingArgs - * @param \ReflectionParameter $param - * @return array - * @throws \DomainException - */ - private function addArgFromParam($existingArgs, \ReflectionParameter $param) - { - $name = $param->getName(); - $type = $this->getParamType($param); - $arg = $this->getResourceFor($type, $name); - - if ($arg !== null) { - $existingArgs[] = $arg; - } elseif ($arg === null && $param->isOptional()) { - $existingArgs[] = $param->getDefaultValue(); - } else { - throw new \DomainException( - "Unsatisfied dependency: " . $param->getName() - ); - } - - return $existingArgs; - } -} diff --git a/src/PHPCensor/Plugin/Wipe.php b/src/PHPCensor/Plugin/Wipe.php index d133fbbb..014302ed 100644 --- a/src/PHPCensor/Plugin/Wipe.php +++ b/src/PHPCensor/Plugin/Wipe.php @@ -19,34 +19,19 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class Wipe implements Plugin +class Wipe extends Plugin { - /** - * @var \PHPCensor\Builder - */ - protected $phpci; - - /** - * @var \PHPCensor\Model\Build - */ - protected $build; - protected $directory; /** - * Set up the plugin, configure options, etc. - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $path = $phpci->buildPath; - $this->phpci = $phpci; - $this->build = $build; - $this->directory = isset($options['directory']) ? $this->phpci->interpolate($options['directory']) : $path; - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + parent::__construct($phpci, $build, $options); + + $path = $this->phpci->buildPath; + $this->directory = isset($options['directory']) ? $this->phpci->interpolate($options['directory']) : $path; } /** diff --git a/src/PHPCensor/Plugin/Xmpp.php b/src/PHPCensor/Plugin/Xmpp.php index a17b5005..02d173c8 100644 --- a/src/PHPCensor/Plugin/Xmpp.php +++ b/src/PHPCensor/Plugin/Xmpp.php @@ -19,11 +19,9 @@ use PHPCensor\Plugin; * @package PHPCI * @subpackage Plugins */ -class XMPP implements Plugin +class XMPP extends Plugin { protected $directory; - protected $phpci; - protected $build; /** * @var string, username of sender account xmpp @@ -61,15 +59,11 @@ class XMPP implements Plugin protected $date_format; /** - * - * @param Builder $phpci - * @param Build $build - * @param array $options + * {@inheritdoc} */ public function __construct(Builder $phpci, Build $build, array $options = []) { - $this->phpci = $phpci; - $this->build = $build; + parent::__construct($phpci, $build, $options); $this->username = ''; $this->password = ''; @@ -89,24 +83,6 @@ class XMPP implements Plugin $this->recipients = $options['recipients']; } } - - $this->setOptions($options); - - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); - } - - /** - * Set options configuration for plugin - * - * @param array $options - */ - protected function setOptions($options) - { - foreach (['username', 'password', 'alias', 'tls', 'server', 'date_format'] as $key) { - if (array_key_exists($key, $options)) { - $this->{$key} = $options[$key]; - } - } } /** From b82427b20f6fae44f716f0be6da6eb28ed1dc92a Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Fri, 22 Jul 2016 12:46:13 +0600 Subject: [PATCH 2/3] Fixed namespaces after rebase to master --- src/PHPCensor/Plugin.php | 8 ++++---- src/PHPCensor/Plugin/Util/Executor.php | 10 +++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/PHPCensor/Plugin.php b/src/PHPCensor/Plugin.php index 0b2824fb..c05e544c 100644 --- a/src/PHPCensor/Plugin.php +++ b/src/PHPCensor/Plugin.php @@ -9,22 +9,22 @@ namespace PHPCensor; -use PHPCI\Model\Build; +use PHPCensor\Model\Build; /** * PHPCI Plugin class - Used by all build plugins. * -* @author Dan Cryer +* @author Dan Cryer */ abstract class Plugin { /** - * @var \PHPCI\Builder + * @var \PHPCensor\Builder */ protected $phpci; /** - * @var \PHPCI\Model\Build + * @var \PHPCensor\Model\Build */ protected $build; diff --git a/src/PHPCensor/Plugin/Util/Executor.php b/src/PHPCensor/Plugin/Util/Executor.php index eeb9f062..f37f6952 100644 --- a/src/PHPCensor/Plugin/Util/Executor.php +++ b/src/PHPCensor/Plugin/Util/Executor.php @@ -12,17 +12,18 @@ use PHPCensor\Builder; /** * Plugin Executor - Runs the configured plugins for a given build stage. + * * @package PHPCensor\Plugin\Util */ class Executor { /** - * @var \PHPCI\Builder + * @var \PHPCensor\Builder */ protected $phpci; /** - * @var \PHPCI\Model\Build + * @var \PHPCensor\Model\Build */ protected $build; @@ -31,11 +32,6 @@ class Executor */ protected $logger; - /** - * @var Factory - */ - protected $pluginFactory; - /** * @var BuildStore */ From 7ec29f1f31dc762e10ec026a427b696922112d7a Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Fri, 22 Jul 2016 13:05:34 +0600 Subject: [PATCH 3/3] Fixed naming in plugins (phpci -> builder) --- src/PHPCensor/Plugin.php | 10 ++-- src/PHPCensor/Plugin/Atoum.php | 16 +++--- src/PHPCensor/Plugin/Behat.php | 16 +++--- src/PHPCensor/Plugin/Campfire.php | 6 +-- src/PHPCensor/Plugin/CleanBuild.php | 10 ++-- src/PHPCensor/Plugin/Codeception.php | 26 +++++----- src/PHPCensor/Plugin/Composer.php | 18 +++---- src/PHPCensor/Plugin/CopyBuild.php | 16 +++--- src/PHPCensor/Plugin/Deployer.php | 12 ++--- src/PHPCensor/Plugin/Email.php | 37 +++++++------- src/PHPCensor/Plugin/Env.php | 4 +- src/PHPCensor/Plugin/FlowdockNotify.php | 6 +-- src/PHPCensor/Plugin/Git.php | 24 ++++----- src/PHPCensor/Plugin/Grunt.php | 12 ++--- src/PHPCensor/Plugin/Gulp.php | 12 ++--- src/PHPCensor/Plugin/HipchatNotify.php | 6 +-- src/PHPCensor/Plugin/Irc.php | 10 ++-- src/PHPCensor/Plugin/Lint.php | 18 +++---- src/PHPCensor/Plugin/Mysql.php | 20 ++++---- src/PHPCensor/Plugin/PackageBuild.php | 12 ++--- src/PHPCensor/Plugin/Pdepend.php | 22 ++++----- src/PHPCensor/Plugin/Pgsql.php | 10 ++-- src/PHPCensor/Plugin/Phar.php | 14 +++--- src/PHPCensor/Plugin/Phing.php | 12 ++--- src/PHPCensor/Plugin/PhpCodeSniffer.php | 26 +++++----- src/PHPCensor/Plugin/PhpCpd.php | 24 ++++----- src/PHPCensor/Plugin/PhpCsFixer.php | 12 ++--- src/PHPCensor/Plugin/PhpDocblockChecker.php | 20 ++++---- src/PHPCensor/Plugin/PhpLoc.php | 16 +++--- src/PHPCensor/Plugin/PhpMessDetector.php | 35 +++++++------ src/PHPCensor/Plugin/PhpParallelLint.php | 18 +++---- src/PHPCensor/Plugin/PhpSpec.php | 8 +-- src/PHPCensor/Plugin/PhpTalLint.php | 23 ++++----- src/PHPCensor/Plugin/PhpUnit.php | 25 +++++----- src/PHPCensor/Plugin/Shell.php | 10 ++-- src/PHPCensor/Plugin/SlackNotify.php | 7 +-- src/PHPCensor/Plugin/Sqlite.php | 10 ++-- src/PHPCensor/Plugin/TechnicalDebt.php | 14 +++--- .../Plugin/Util/ComposerPluginInformation.php | 49 +------------------ src/PHPCensor/Plugin/Util/Executor.php | 16 +++--- .../Util/TestResultParsers/Codeception.php | 12 ++--- src/PHPCensor/Plugin/Wipe.php | 12 ++--- src/PHPCensor/Plugin/Xmpp.php | 20 ++++---- 43 files changed, 330 insertions(+), 376 deletions(-) diff --git a/src/PHPCensor/Plugin.php b/src/PHPCensor/Plugin.php index c05e544c..8b28b2b5 100644 --- a/src/PHPCensor/Plugin.php +++ b/src/PHPCensor/Plugin.php @@ -21,7 +21,7 @@ abstract class Plugin /** * @var \PHPCensor\Builder */ - protected $phpci; + protected $builder; /** * @var \PHPCensor\Model\Build @@ -34,17 +34,17 @@ abstract class Plugin protected $options; /** - * @param Builder $phpci + * @param Builder $builder * @param Build $build * @param array $options */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - $this->phpci = $phpci; + $this->builder = $builder; $this->build = $build; $this->options = $options; - $this->phpci->logDebug('Plugin options: ' . json_encode($options)); + $this->builder->logDebug('Plugin options: ' . json_encode($options)); } /** diff --git a/src/PHPCensor/Plugin/Atoum.php b/src/PHPCensor/Plugin/Atoum.php index 42b4de0a..b1254752 100644 --- a/src/PHPCensor/Plugin/Atoum.php +++ b/src/PHPCensor/Plugin/Atoum.php @@ -29,14 +29,14 @@ class Atoum extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); if (isset($options['executable'])) { - $this->executable = $this->phpci->buildPath . DIRECTORY_SEPARATOR.$options['executable']; + $this->executable = $this->builder->buildPath . DIRECTORY_SEPARATOR.$options['executable']; } else { - $this->executable = $this->phpci->findBinary('atoum'); + $this->executable = $this->builder->findBinary('atoum'); } if (isset($options['args'])) { @@ -67,21 +67,21 @@ class Atoum extends Plugin $cmd .= " -c '{$this->config}'"; } if ($this->directory !== null) { - $dirPath = $this->phpci->buildPath . DIRECTORY_SEPARATOR . $this->directory; + $dirPath = $this->builder->buildPath . DIRECTORY_SEPARATOR . $this->directory; $cmd .= " -d '{$dirPath}'"; } - chdir($this->phpci->buildPath); + chdir($this->builder->buildPath); $output = ''; $status = true; exec($cmd, $output); if (count(preg_grep("/Success \(/", $output)) == 0) { $status = false; - $this->phpci->log($output); + $this->builder->log($output); } if (count($output) == 0) { $status = false; - $this->phpci->log(Lang::get('no_tests_performed')); + $this->builder->log(Lang::get('no_tests_performed')); } return $status; diff --git a/src/PHPCensor/Plugin/Behat.php b/src/PHPCensor/Plugin/Behat.php index 01fbb5ad..7c8b78af 100644 --- a/src/PHPCensor/Plugin/Behat.php +++ b/src/PHPCensor/Plugin/Behat.php @@ -30,16 +30,16 @@ class Behat extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->features = ''; if (isset($options['executable'])) { $this->executable = $options['executable']; } else { - $this->executable = $this->phpci->findBinary('behat'); + $this->executable = $this->builder->findBinary('behat'); } if (!empty($options['features'])) { @@ -53,17 +53,17 @@ class Behat extends Plugin public function execute() { $current_dir = getcwd(); - chdir($this->phpci->buildPath); + chdir($this->builder->buildPath); $behat = $this->executable; if (!$behat) { - $this->phpci->logFailure(Lang::get('could_not_find', 'behat')); + $this->builder->logFailure(Lang::get('could_not_find', 'behat')); return false; } - $success = $this->phpci->executeCommand($behat . ' %s', $this->features); + $success = $this->builder->executeCommand($behat . ' %s', $this->features); chdir($current_dir); list($errorCount, $data) = $this->parseBehatOutput(); @@ -81,7 +81,7 @@ class Behat extends Plugin */ public function parseBehatOutput() { - $output = $this->phpci->getLastOutput(); + $output = $this->builder->getLastOutput(); $parts = explode('---', $output); @@ -113,7 +113,7 @@ class Behat extends Plugin ]; $this->build->reportError( - $this->phpci, + $this->builder, 'behat', 'Behat scenario failed.', BuildError::SEVERITY_HIGH, diff --git a/src/PHPCensor/Plugin/Campfire.php b/src/PHPCensor/Plugin/Campfire.php index 1e4ac6c4..54242cb5 100644 --- a/src/PHPCensor/Plugin/Campfire.php +++ b/src/PHPCensor/Plugin/Campfire.php @@ -34,15 +34,15 @@ class Campfire extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->message = $options['message']; $this->userAgent = "PHP Censor/1.0"; $this->cookie = "php-censor-cookie"; - $buildSettings = $this->phpci->getConfig('build_settings'); + $buildSettings = $this->builder->getConfig('build_settings'); if (isset($buildSettings['campfire'])) { $campfire = $buildSettings['campfire']; diff --git a/src/PHPCensor/Plugin/CleanBuild.php b/src/PHPCensor/Plugin/CleanBuild.php index 47e2aa68..b4b30af6 100644 --- a/src/PHPCensor/Plugin/CleanBuild.php +++ b/src/PHPCensor/Plugin/CleanBuild.php @@ -27,9 +27,9 @@ class CleanBuild extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->remove = isset($options['remove']) && is_array($options['remove']) ? $options['remove'] : []; } @@ -43,13 +43,13 @@ class CleanBuild extends Plugin if (IS_WIN) { $cmd = 'rmdir /S /Q "%s"'; } - $this->phpci->executeCommand($cmd, $this->phpci->buildPath . 'composer.phar'); - $this->phpci->executeCommand($cmd, $this->phpci->buildPath . 'composer.lock'); + $this->builder->executeCommand($cmd, $this->builder->buildPath . 'composer.phar'); + $this->builder->executeCommand($cmd, $this->builder->buildPath . 'composer.lock'); $success = true; foreach ($this->remove as $file) { - $ok = $this->phpci->executeCommand($cmd, $this->phpci->buildPath . $file); + $ok = $this->builder->executeCommand($cmd, $this->builder->buildPath . $file); if (!$ok) { $success = false; diff --git a/src/PHPCensor/Plugin/Codeception.php b/src/PHPCensor/Plugin/Codeception.php index 106711c0..585c867f 100644 --- a/src/PHPCensor/Plugin/Codeception.php +++ b/src/PHPCensor/Plugin/Codeception.php @@ -43,14 +43,14 @@ class Codeception extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->path = 'tests' . DIRECTORY_SEPARATOR . '_output' . DIRECTORY_SEPARATOR; if (empty($options['config'])) { - $this->ymlConfigFile = self::findConfigFile($this->phpci->buildPath); + $this->ymlConfigFile = self::findConfigFile($this->builder->buildPath); } else { $this->ymlConfigFile = $options['config']; } @@ -112,12 +112,12 @@ class Codeception extends Plugin implements ZeroConfigPlugin */ protected function runConfigFile($configPath) { - $this->phpci->logExecOutput(false); + $this->builder->logExecOutput(false); - $codeception = $this->phpci->findBinary('codecept'); + $codeception = $this->builder->findBinary('codecept'); if (!$codeception) { - $this->phpci->logFailure(Lang::get('could_not_find', 'codecept')); + $this->builder->logFailure(Lang::get('could_not_find', 'codecept')); return false; } @@ -128,16 +128,16 @@ class Codeception extends Plugin implements ZeroConfigPlugin $cmd = 'cd /d "%s" && ' . $codeception . ' run -c "%s" --xml ' . $this->args; } - $configPath = $this->phpci->buildPath . $configPath; - $success = $this->phpci->executeCommand($cmd, $this->phpci->buildPath, $configPath); + $configPath = $this->builder->buildPath . $configPath; + $success = $this->builder->executeCommand($cmd, $this->builder->buildPath, $configPath); - $this->phpci->log( - 'Codeception XML path: '. $this->phpci->buildPath . $this->path . 'report.xml', + $this->builder->log( + 'Codeception XML path: '. $this->builder->buildPath . $this->path . 'report.xml', Loglevel::DEBUG ); - $xml = file_get_contents($this->phpci->buildPath . $this->path . 'report.xml', false); - $parser = new Parser($this->phpci, $xml); + $xml = file_get_contents($this->builder->buildPath . $this->path . 'report.xml', false); + $parser = new Parser($this->builder, $xml); $output = $parser->parse(); $meta = [ @@ -149,7 +149,7 @@ class Codeception extends Plugin implements ZeroConfigPlugin $this->build->storeMeta('codeception-meta', $meta); $this->build->storeMeta('codeception-data', $output); $this->build->storeMeta('codeception-errors', $parser->getTotalFailures()); - $this->phpci->logExecOutput(true); + $this->builder->logExecOutput(true); return $success; } diff --git a/src/PHPCensor/Plugin/Composer.php b/src/PHPCensor/Plugin/Composer.php index fad5a992..bd02aec4 100644 --- a/src/PHPCensor/Plugin/Composer.php +++ b/src/PHPCensor/Plugin/Composer.php @@ -33,11 +33,11 @@ class Composer extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $this->directory = $path; $this->action = 'install'; $this->preferDist = false; @@ -94,7 +94,7 @@ class Composer extends Plugin implements ZeroConfigPlugin */ public function execute() { - $composerLocation = $this->phpci->findBinary(['composer', 'composer.phar']); + $composerLocation = $this->builder->findBinary(['composer', 'composer.phar']); $cmd = ''; @@ -105,27 +105,27 @@ class Composer extends Plugin implements ZeroConfigPlugin $cmd .= $composerLocation . ' --no-ansi --no-interaction '; if ($this->preferDist) { - $this->phpci->log('Using --prefer-dist flag'); + $this->builder->log('Using --prefer-dist flag'); $cmd .= ' --prefer-dist'; } if ($this->preferSource) { - $this->phpci->log('Using --prefer-source flag'); + $this->builder->log('Using --prefer-source flag'); $cmd .= ' --prefer-source'; } if ($this->nodev) { - $this->phpci->log('Using --no-dev flag'); + $this->builder->log('Using --no-dev flag'); $cmd .= ' --no-dev'; } if ($this->ignorePlatformReqs) { - $this->phpci->log('Using --ignore-platform-reqs flag'); + $this->builder->log('Using --ignore-platform-reqs flag'); $cmd .= ' --ignore-platform-reqs'; } $cmd .= ' --working-dir="%s" %s'; - return $this->phpci->executeCommand($cmd, $this->directory, $this->action); + return $this->builder->executeCommand($cmd, $this->directory, $this->action); } } diff --git a/src/PHPCensor/Plugin/CopyBuild.php b/src/PHPCensor/Plugin/CopyBuild.php index 44087de9..e36a9d8e 100644 --- a/src/PHPCensor/Plugin/CopyBuild.php +++ b/src/PHPCensor/Plugin/CopyBuild.php @@ -29,11 +29,11 @@ class CopyBuild extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $this->directory = isset($options['directory']) ? $options['directory'] : $path; $this->wipe = isset($options['wipe']) ? (bool)$options['wipe'] : false; $this->ignore = isset($options['respect_ignore']) ? (bool)$options['respect_ignore'] : false; @@ -44,7 +44,7 @@ class CopyBuild extends Plugin */ public function execute() { - $build = $this->phpci->buildPath; + $build = $this->builder->buildPath; if ($this->directory == $build) { return false; @@ -57,7 +57,7 @@ class CopyBuild extends Plugin $cmd = 'mkdir -p "%s" && xcopy /E "%s" "%s"'; } - $success = $this->phpci->executeCommand($cmd, $this->directory, $build, $this->directory); + $success = $this->builder->executeCommand($cmd, $this->directory, $build, $this->directory); $this->deleteIgnoredFiles(); @@ -72,7 +72,7 @@ class CopyBuild extends Plugin { if ($this->wipe === true && $this->directory != '/' && is_dir($this->directory)) { $cmd = 'rm -Rf "%s*"'; - $success = $this->phpci->executeCommand($cmd, $this->directory); + $success = $this->builder->executeCommand($cmd, $this->directory); if (!$success) { throw new \Exception(Lang::get('failed_to_wipe', $this->directory)); @@ -86,12 +86,12 @@ class CopyBuild extends Plugin protected function deleteIgnoredFiles() { if ($this->ignore) { - foreach ($this->phpci->ignore as $file) { + foreach ($this->builder->ignore as $file) { $cmd = 'rm -Rf "%s/%s"'; if (IS_WIN) { $cmd = 'rmdir /S /Q "%s\%s"'; } - $this->phpci->executeCommand($cmd, $this->directory, $file); + $this->builder->executeCommand($cmd, $this->directory, $file); } } } diff --git a/src/PHPCensor/Plugin/Deployer.php b/src/PHPCensor/Plugin/Deployer.php index 07391a55..31519936 100644 --- a/src/PHPCensor/Plugin/Deployer.php +++ b/src/PHPCensor/Plugin/Deployer.php @@ -29,9 +29,9 @@ class Deployer extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->reason = 'PHP Censor Build #%BUILD% - %COMMIT_MESSAGE%'; if (isset($options['webhook_url'])) { @@ -51,17 +51,17 @@ class Deployer extends Plugin public function execute() { if (empty($this->webhookUrl)) { - $this->phpci->logFailure('You must specify a webhook URL.'); + $this->builder->logFailure('You must specify a webhook URL.'); return false; } $http = new HttpClient(); $response = $http->post($this->webhookUrl, [ - 'reason' => $this->phpci->interpolate($this->reason), + 'reason' => $this->builder->interpolate($this->reason), 'source' => 'PHP Censor', - 'url' => $this->phpci->interpolate('%BUILD_URI%'), - 'branch' => $this->phpci->interpolate('%BRANCH%'), + 'url' => $this->builder->interpolate('%BUILD_URI%'), + 'branch' => $this->builder->interpolate('%BRANCH%'), 'update_only' => $this->updateOnly ]); diff --git a/src/PHPCensor/Plugin/Email.php b/src/PHPCensor/Plugin/Email.php index b13e2116..74760480 100644 --- a/src/PHPCensor/Plugin/Email.php +++ b/src/PHPCensor/Plugin/Email.php @@ -46,7 +46,15 @@ class Email extends Plugin $buildStatus = $this->build->isSuccessful() ? "Passing Build" : "Failing Build"; $projectName = $this->build->getProject()->getTitle(); - $view = $this->getMailTemplate(); + try { + $view = $this->getMailTemplate(); + } catch (ViewRuntimeException $e) { + $this->builder->log( + sprintf('Unknown mail template "%s", falling back to default.', $this->options['template']), + LogLevel::WARNING + ); + $view = $this->getDefaultMailTemplate(); + } $view->build = $this->build; $view->project = $this->build->getProject(); @@ -64,8 +72,8 @@ class Email extends Plugin ); // This is a success if we've not failed to send anything. - $this->phpci->log(Lang::get('n_emails_sent', (count($addresses) - $sendFailures))); - $this->phpci->log(Lang::get('n_emails_failed', $sendFailures)); + $this->builder->log(Lang::get('n_emails_sent', (count($addresses) - $sendFailures))); + $this->builder->log(Lang::get('n_emails_failed', $sendFailures)); return ($sendFailures === 0); } @@ -93,7 +101,7 @@ class Email extends Plugin } } - return $email->send($this->phpci); + return $email->send($this->builder); } /** @@ -131,8 +139,8 @@ class Email extends Plugin $addresses = []; $committer = $this->build->getCommitterEmail(); - $this->phpci->logDebug(sprintf("Committer email: '%s'", $committer)); - $this->phpci->logDebug(sprintf( + $this->builder->logDebug(sprintf("Committer email: '%s'", $committer)); + $this->builder->logDebug(sprintf( "Committer option: '%s'", (!empty($this->options['committer']) && $this->options['committer']) ? 'true' : 'false' )); @@ -143,7 +151,7 @@ class Email extends Plugin } } - $this->phpci->logDebug(sprintf( + $this->builder->logDebug(sprintf( "Addresses option: '%s'", (!empty($this->options['addresses']) && is_array($this->options['addresses'])) ? implode(', ', $this->options['addresses']) : 'false' )); @@ -154,7 +162,7 @@ class Email extends Plugin } } - $this->phpci->logDebug(sprintf( + $this->builder->logDebug(sprintf( "Default mailTo option: '%s'", !empty($this->options['default_mailto_address']) ? $this->options['default_mailto_address'] : 'false' )); @@ -191,17 +199,8 @@ class Email extends Plugin */ protected function getMailTemplate() { - try { - if (isset($this->options['template'])) { - return new View('Email/' . $this->options['template']); - } - } catch (ViewRuntimeException $e) { - $this->phpci->log( - sprintf('Unknown mail template "%s", falling back to default.', $this->options['template']), - LogLevel::WARNING - ); - - return $this->getDefaultMailTemplate(); + if (isset($this->options['template'])) { + return new View('Email/' . $this->options['template']); } return $this->getDefaultMailTemplate(); diff --git a/src/PHPCensor/Plugin/Env.php b/src/PHPCensor/Plugin/Env.php index b623419c..5619ded2 100644 --- a/src/PHPCensor/Plugin/Env.php +++ b/src/PHPCensor/Plugin/Env.php @@ -39,9 +39,9 @@ class Env extends Plugin $env_var = "$key=$value"; } - if (!putenv($this->phpci->interpolate($env_var))) { + if (!putenv($this->builder->interpolate($env_var))) { $success = false; - $this->phpci->logFailure(Lang::get('unable_to_set_env')); + $this->builder->logFailure(Lang::get('unable_to_set_env')); } } return $success; diff --git a/src/PHPCensor/Plugin/FlowdockNotify.php b/src/PHPCensor/Plugin/FlowdockNotify.php index 98c365e2..0ff09906 100644 --- a/src/PHPCensor/Plugin/FlowdockNotify.php +++ b/src/PHPCensor/Plugin/FlowdockNotify.php @@ -32,9 +32,9 @@ class FlowdockNotify extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); if (!is_array($options) || !isset($options['api_key'])) { throw new \Exception('Please define the api_key for Flowdock Notify plugin!'); @@ -52,7 +52,7 @@ class FlowdockNotify extends Plugin public function execute() { - $message = $this->phpci->interpolate($this->message); + $message = $this->builder->interpolate($this->message); $successfulBuild = $this->build->isSuccessful() ? 'Success' : 'Failed'; $push = new Push($this->api_key); $flowMessage = TeamInboxMessage::create() diff --git a/src/PHPCensor/Plugin/Git.php b/src/PHPCensor/Plugin/Git.php index 848d8861..df9a9b03 100644 --- a/src/PHPCensor/Plugin/Git.php +++ b/src/PHPCensor/Plugin/Git.php @@ -30,7 +30,7 @@ class Git extends Plugin */ public function execute() { - $buildPath = $this->phpci->buildPath; + $buildPath = $this->builder->buildPath; // Check if there are any actions to be run for the branch we're running on: if (!array_key_exists($this->build->getBranch(), $this->actions)) { @@ -89,8 +89,8 @@ class Git extends Plugin { if (array_key_exists('branch', $options)) { $cmd = 'cd "%s" && git checkout %s && git merge "%s"'; - $path = $this->phpci->buildPath; - return $this->phpci->executeCommand($cmd, $path, $options['branch'], $this->build->getBranch()); + $path = $this->builder->buildPath; + return $this->builder->executeCommand($cmd, $path, $options['branch'], $this->build->getBranch()); } } @@ -105,15 +105,15 @@ class Git extends Plugin $message = Lang::get('tag_created', date('Y-m-d H:i:s')); if (array_key_exists('name', $options)) { - $tagName = $this->phpci->interpolate($options['name']); + $tagName = $this->builder->interpolate($options['name']); } if (array_key_exists('message', $options)) { - $message = $this->phpci->interpolate($options['message']); + $message = $this->builder->interpolate($options['message']); } $cmd = 'git tag %s -m "%s"'; - return $this->phpci->executeCommand($cmd, $tagName, $message); + return $this->builder->executeCommand($cmd, $tagName, $message); } /** @@ -127,14 +127,14 @@ class Git extends Plugin $remote = 'origin'; if (array_key_exists('branch', $options)) { - $branch = $this->phpci->interpolate($options['branch']); + $branch = $this->builder->interpolate($options['branch']); } if (array_key_exists('remote', $options)) { - $remote = $this->phpci->interpolate($options['remote']); + $remote = $this->builder->interpolate($options['remote']); } - return $this->phpci->executeCommand('git pull %s %s', $remote, $branch); + return $this->builder->executeCommand('git pull %s %s', $remote, $branch); } /** @@ -148,13 +148,13 @@ class Git extends Plugin $remote = 'origin'; if (array_key_exists('branch', $options)) { - $branch = $this->phpci->interpolate($options['branch']); + $branch = $this->builder->interpolate($options['branch']); } if (array_key_exists('remote', $options)) { - $remote = $this->phpci->interpolate($options['remote']); + $remote = $this->builder->interpolate($options['remote']); } - return $this->phpci->executeCommand('git push %s %s', $remote, $branch); + return $this->builder->executeCommand('git push %s %s', $remote, $branch); } } diff --git a/src/PHPCensor/Plugin/Grunt.php b/src/PHPCensor/Plugin/Grunt.php index f7e49a85..63d883dc 100644 --- a/src/PHPCensor/Plugin/Grunt.php +++ b/src/PHPCensor/Plugin/Grunt.php @@ -30,14 +30,14 @@ class Grunt extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $this->directory = $path; $this->task = null; - $this->grunt = $this->phpci->findBinary('grunt'); + $this->grunt = $this->builder->findBinary('grunt'); $this->gruntfile = 'Gruntfile.js'; // Handle options: @@ -68,7 +68,7 @@ class Grunt extends Plugin if (IS_WIN) { $cmd = 'cd /d %s && npm install'; } - if (!$this->phpci->executeCommand($cmd, $this->directory)) { + if (!$this->builder->executeCommand($cmd, $this->directory)) { return false; } @@ -82,6 +82,6 @@ class Grunt extends Plugin $cmd .= ' %s'; // the task that will be executed // and execute it - return $this->phpci->executeCommand($cmd, $this->directory, $this->gruntfile, $this->task); + return $this->builder->executeCommand($cmd, $this->directory, $this->gruntfile, $this->task); } } diff --git a/src/PHPCensor/Plugin/Gulp.php b/src/PHPCensor/Plugin/Gulp.php index 2ea6665b..b0058df6 100644 --- a/src/PHPCensor/Plugin/Gulp.php +++ b/src/PHPCensor/Plugin/Gulp.php @@ -30,14 +30,14 @@ class Gulp extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $this->directory = $path; $this->task = null; - $this->gulp = $this->phpci->findBinary('gulp'); + $this->gulp = $this->builder->findBinary('gulp'); $this->gulpfile = 'gulpfile.js'; // Handle options: @@ -68,7 +68,7 @@ class Gulp extends Plugin if (IS_WIN) { $cmd = 'cd /d %s && npm install'; } - if (!$this->phpci->executeCommand($cmd, $this->directory)) { + if (!$this->builder->executeCommand($cmd, $this->directory)) { return false; } @@ -82,6 +82,6 @@ class Gulp extends Plugin $cmd .= ' %s'; // the task that will be executed // and execute it - return $this->phpci->executeCommand($cmd, $this->directory, $this->gulpfile, $this->task); + return $this->builder->executeCommand($cmd, $this->directory, $this->gulpfile, $this->task); } } diff --git a/src/PHPCensor/Plugin/HipchatNotify.php b/src/PHPCensor/Plugin/HipchatNotify.php index 21196bf4..27a43556 100644 --- a/src/PHPCensor/Plugin/HipchatNotify.php +++ b/src/PHPCensor/Plugin/HipchatNotify.php @@ -34,9 +34,9 @@ class HipchatNotify extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->userAgent = "PHP Censor/1.0"; $this->cookie = "php-censor-cookie"; @@ -74,7 +74,7 @@ class HipchatNotify extends Plugin public function execute() { $hipChat = new HipChat($this->authToken); - $message = $this->phpci->interpolate($this->message); + $message = $this->builder->interpolate($this->message); $result = true; if (is_array($this->room)) { diff --git a/src/PHPCensor/Plugin/Irc.php b/src/PHPCensor/Plugin/Irc.php index 4887793d..6aa3ee65 100644 --- a/src/PHPCensor/Plugin/Irc.php +++ b/src/PHPCensor/Plugin/Irc.php @@ -31,12 +31,12 @@ class Irc extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->message = $options['message']; - $buildSettings = $this->phpci->getConfig('build_settings'); + $buildSettings = $this->builder->getConfig('build_settings'); if (isset($buildSettings['irc'])) { $irc = $buildSettings['irc']; @@ -54,10 +54,10 @@ class Irc extends Plugin */ public function execute() { - $msg = $this->phpci->interpolate($this->message); + $msg = $this->builder->interpolate($this->message); if (empty($this->server) || empty($this->room) || empty($this->nick)) { - $this->phpci->logFailure(Lang::get('irc_settings')); + $this->builder->logFailure(Lang::get('irc_settings')); } if (empty($this->port)) { diff --git a/src/PHPCensor/Plugin/Lint.php b/src/PHPCensor/Plugin/Lint.php index 71a0dd17..e659e78e 100644 --- a/src/PHPCensor/Plugin/Lint.php +++ b/src/PHPCensor/Plugin/Lint.php @@ -29,12 +29,12 @@ class Lint extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->directories = ['']; - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; if (!empty($options['directory'])) { $this->directories[] = $options['directory']; @@ -54,10 +54,10 @@ class Lint extends Plugin */ public function execute() { - $this->phpci->quiet = true; + $this->builder->quiet = true; $success = true; - $php = $this->phpci->findBinary('php'); + $php = $this->builder->findBinary('php'); foreach ($this->directories as $dir) { if (!$this->lintDirectory($php, $dir)) { @@ -65,7 +65,7 @@ class Lint extends Plugin } } - $this->phpci->quiet = false; + $this->builder->quiet = false; return $success; } @@ -99,7 +99,7 @@ class Lint extends Plugin protected function lintDirectory($php, $path) { $success = true; - $directory = new \DirectoryIterator($this->phpci->buildPath . $path); + $directory = new \DirectoryIterator($this->builder->buildPath . $path); foreach ($directory as $item) { if ($item->isDot()) { @@ -130,8 +130,8 @@ class Lint extends Plugin { $success = true; - if (!$this->phpci->executeCommand($php . ' -l "%s"', $this->phpci->buildPath . $path)) { - $this->phpci->logFailure($path); + if (!$this->builder->executeCommand($php . ' -l "%s"', $this->builder->buildPath . $path)) { + $this->builder->logFailure($path); $success = false; } diff --git a/src/PHPCensor/Plugin/Mysql.php b/src/PHPCensor/Plugin/Mysql.php index 130141c4..d53b7878 100644 --- a/src/PHPCensor/Plugin/Mysql.php +++ b/src/PHPCensor/Plugin/Mysql.php @@ -43,9 +43,9 @@ class Mysql extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $config = Database::getConnection('write')->getDetails(); @@ -53,18 +53,18 @@ class Mysql extends Plugin $this->user = $config['user']; $this->pass = $config['pass']; - $buildSettings = $this->phpci->getConfig('build_settings'); + $buildSettings = $this->builder->getConfig('build_settings'); if (!isset($buildSettings['mysql'])) { return; } if (!empty($buildSettings['mysql']['host'])) { - $this->host = $this->phpci->interpolate($buildSettings['mysql']['host']); + $this->host = $this->builder->interpolate($buildSettings['mysql']['host']); } if (!empty($buildSettings['mysql']['user'])) { - $this->user = $this->phpci->interpolate($buildSettings['mysql']['user']); + $this->user = $this->builder->interpolate($buildSettings['mysql']['user']); } if (array_key_exists('pass', $buildSettings['mysql'])) { @@ -85,7 +85,7 @@ class Mysql extends Plugin foreach ($this->options as $query) { if (!is_array($query)) { // Simple query - $pdo->query($this->phpci->interpolate($query)); + $pdo->query($this->builder->interpolate($query)); } elseif (isset($query['import'])) { // SQL file execution $this->executeFile($query['import']); @@ -94,7 +94,7 @@ class Mysql extends Plugin } } } catch (\Exception $ex) { - $this->phpci->logFailure($ex->getMessage()); + $this->builder->logFailure($ex->getMessage()); return false; } return true; @@ -111,15 +111,15 @@ class Mysql extends Plugin throw new \Exception(Lang::get('import_file_key')); } - $import_file = $this->phpci->buildPath . $this->phpci->interpolate($query['file']); + $import_file = $this->builder->buildPath . $this->builder->interpolate($query['file']); if (!is_readable($import_file)) { throw new \Exception(Lang::get('cannot_open_import', $import_file)); } - $database = isset($query['database']) ? $this->phpci->interpolate($query['database']) : null; + $database = isset($query['database']) ? $this->builder->interpolate($query['database']) : null; $import_command = $this->getImportCommand($import_file, $database); - if (!$this->phpci->executeCommand($import_command)) { + if (!$this->builder->executeCommand($import_command)) { throw new \Exception(Lang::get('unable_to_execute')); } diff --git a/src/PHPCensor/Plugin/PackageBuild.php b/src/PHPCensor/Plugin/PackageBuild.php index 5965d714..b25cd359 100644 --- a/src/PHPCensor/Plugin/PackageBuild.php +++ b/src/PHPCensor/Plugin/PackageBuild.php @@ -28,11 +28,11 @@ class PackageBuild extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $this->directory = isset($options['directory']) ? $options['directory'] : $path; $this->filename = isset($options['filename']) ? $options['filename'] : 'build'; $this->format = isset($options['format']) ? $options['format'] : 'zip'; @@ -43,7 +43,7 @@ class PackageBuild extends Plugin */ public function execute() { - $path = $this->phpci->buildPath; + $path = $this->builder->buildPath; $build = $this->build; if ($this->directory == $path) { @@ -59,7 +59,7 @@ class PackageBuild extends Plugin $filename = preg_replace('/([^a-zA-Z0-9_-]+)/', '', $filename); $curdir = getcwd(); - chdir($this->phpci->buildPath); + chdir($this->builder->buildPath); if (!is_array($this->format)) { $this->format = [$this->format]; @@ -76,7 +76,7 @@ class PackageBuild extends Plugin break; } - $success = $this->phpci->executeCommand($cmd, $this->directory, $filename); + $success = $this->builder->executeCommand($cmd, $this->directory, $filename); } chdir($curdir); diff --git a/src/PHPCensor/Plugin/Pdepend.php b/src/PHPCensor/Plugin/Pdepend.php index 43480ab1..365f00da 100644 --- a/src/PHPCensor/Plugin/Pdepend.php +++ b/src/PHPCensor/Plugin/Pdepend.php @@ -52,17 +52,17 @@ class Pdepend extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->directory = isset($options['directory']) ? $options['directory'] : $this->phpci->buildPath; + $this->directory = isset($options['directory']) ? $options['directory'] : $this->builder->buildPath; - $title = $this->phpci->getBuildProjectTitle(); + $title = $this->builder->getBuildProjectTitle(); $this->summary = $title . '-summary.xml'; $this->pyramid = $title . '-pyramid.svg'; $this->chart = $title . '-chart.svg'; - $this->location = $this->phpci->buildPath . '..' . DIRECTORY_SEPARATOR . 'pdepend'; + $this->location = $this->builder->buildPath . '..' . DIRECTORY_SEPARATOR . 'pdepend'; } /** @@ -77,20 +77,20 @@ class Pdepend extends Plugin throw new \Exception(sprintf('The location %s is not writable or does not exist.', $this->location)); } - $pdepend = $this->phpci->findBinary('pdepend'); + $pdepend = $this->builder->findBinary('pdepend'); $cmd = $pdepend . ' --summary-xml="%s" --jdepend-chart="%s" --overview-pyramid="%s" %s "%s"'; $this->removeBuildArtifacts(); // If we need to ignore directories - if (count($this->phpci->ignore)) { - $ignore = ' --ignore=' . implode(',', $this->phpci->ignore); + if (count($this->builder->ignore)) { + $ignore = ' --ignore=' . implode(',', $this->builder->ignore); } else { $ignore = ''; } - $success = $this->phpci->executeCommand( + $success = $this->builder->executeCommand( $cmd, $this->location . DIRECTORY_SEPARATOR . $this->summary, $this->location . DIRECTORY_SEPARATOR . $this->chart, @@ -99,10 +99,10 @@ class Pdepend extends Plugin $this->directory ); - $config = $this->phpci->getSystemConfig('php-censor'); + $config = $this->builder->getSystemConfig('php-censor'); if ($success) { - $this->phpci->logSuccess( + $this->builder->logSuccess( sprintf( "Pdepend successful. You can use %s\n, ![Chart](%s \"Pdepend Chart\")\n and ![Pyramid](%s \"Pdepend Pyramid\")\n diff --git a/src/PHPCensor/Plugin/Pgsql.php b/src/PHPCensor/Plugin/Pgsql.php index f527f21d..fdaa11e6 100644 --- a/src/PHPCensor/Plugin/Pgsql.php +++ b/src/PHPCensor/Plugin/Pgsql.php @@ -40,11 +40,11 @@ class Pgsql extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $buildSettings = $this->phpci->getConfig('build_settings'); + $buildSettings = $this->builder->getConfig('build_settings'); if (isset($buildSettings['pgsql'])) { $sql = $buildSettings['pgsql']; @@ -65,10 +65,10 @@ class Pgsql extends Plugin $pdo = new PDO('pgsql:host=' . $this->host, $this->user, $this->pass, $opts); foreach ($this->options as $query) { - $pdo->query($this->phpci->interpolate($query)); + $pdo->query($this->builder->interpolate($query)); } } catch (\Exception $ex) { - $this->phpci->logFailure($ex->getMessage()); + $this->builder->logFailure($ex->getMessage()); return false; } return true; diff --git a/src/PHPCensor/Plugin/Phar.php b/src/PHPCensor/Plugin/Phar.php index 4502c0a8..0a8bafd0 100644 --- a/src/PHPCensor/Plugin/Phar.php +++ b/src/PHPCensor/Plugin/Phar.php @@ -41,9 +41,9 @@ class Phar extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); // Directory? if (isset($options['directory'])) { @@ -86,7 +86,7 @@ class Phar extends Plugin public function getDirectory() { if (!isset($this->directory)) { - $this->setDirectory($this->phpci->buildPath); + $this->setDirectory($this->builder->buildPath); } return $this->directory; } @@ -172,7 +172,7 @@ class Phar extends Plugin $content = ''; $filename = $this->getStub(); if ($filename) { - $content = file_get_contents($this->phpci->buildPath . DIRECTORY_SEPARATOR . $this->getStub()); + $content = file_get_contents($this->builder->buildPath . DIRECTORY_SEPARATOR . $this->getStub()); } return $content; } @@ -188,7 +188,7 @@ class Phar extends Plugin try { $file = $this->getDirectory() . DIRECTORY_SEPARATOR . $this->getFilename(); $phar = new PHPPhar($file, 0, $this->getFilename()); - $phar->buildFromDirectory($this->phpci->buildPath, $this->getRegExp()); + $phar->buildFromDirectory($this->builder->buildPath, $this->getRegExp()); $stub = $this->getStubContent(); if ($stub) { @@ -197,8 +197,8 @@ class Phar extends Plugin $success = true; } catch (Exception $e) { - $this->phpci->log(Lang::get('phar_internal_error')); - $this->phpci->log($e->getMessage()); + $this->builder->log(Lang::get('phar_internal_error')); + $this->builder->log($e->getMessage()); } return $success; diff --git a/src/PHPCensor/Plugin/Phing.php b/src/PHPCensor/Plugin/Phing.php index 82ac794e..bf082320 100644 --- a/src/PHPCensor/Plugin/Phing.php +++ b/src/PHPCensor/Plugin/Phing.php @@ -33,17 +33,17 @@ class Phing extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); /* * Set working directory */ if (isset($options['directory'])) { - $directory = $this->phpci->buildPath . DIRECTORY_SEPARATOR . $options['directory']; + $directory = $this->builder->buildPath . DIRECTORY_SEPARATOR . $options['directory']; } else { - $directory = $this->phpci->buildPath; + $directory = $this->builder->buildPath; } $this->setDirectory($directory); @@ -73,7 +73,7 @@ class Phing extends Plugin */ public function execute() { - $phingExecutable = $this->phpci->findBinary('phing'); + $phingExecutable = $this->builder->findBinary('phing'); $cmd[] = $phingExecutable . ' -f ' . $this->getBuildFilePath(); @@ -87,7 +87,7 @@ class Phing extends Plugin $cmd[] = $this->targetsToString(); $cmd[] = '2>&1'; - return $this->phpci->executeCommand(implode(' ', $cmd), $this->directory, $this->targets); + return $this->builder->executeCommand(implode(' ', $cmd), $this->directory, $this->targets); } /** diff --git a/src/PHPCensor/Plugin/PhpCodeSniffer.php b/src/PHPCensor/Plugin/PhpCodeSniffer.php index 2557ac7e..74f40d23 100644 --- a/src/PHPCensor/Plugin/PhpCodeSniffer.php +++ b/src/PHPCensor/Plugin/PhpCodeSniffer.php @@ -73,17 +73,17 @@ class PhpCodeSniffer extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->suffixes = ['php']; - $this->directory = $this->phpci->buildPath; + $this->directory = $this->builder->buildPath; $this->standard = 'PSR2'; $this->tab_width = ''; $this->encoding = ''; $this->path = ''; - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; $this->allowed_warnings = 0; $this->allowed_errors = 0; @@ -128,25 +128,25 @@ class PhpCodeSniffer extends Plugin implements ZeroConfigPlugin { list($ignore, $standard, $suffixes) = $this->getFlags(); - $phpcs = $this->phpci->findBinary('phpcs'); + $phpcs = $this->builder->findBinary('phpcs'); - $this->phpci->logExecOutput(false); + $this->builder->logExecOutput(false); $cmd = $phpcs . ' --report=json %s %s %s %s %s "%s"'; - $this->phpci->executeCommand( + $this->builder->executeCommand( $cmd, $standard, $suffixes, $ignore, $this->tab_width, $this->encoding, - $this->phpci->buildPath . $this->path + $this->builder->buildPath . $this->path ); - $output = $this->phpci->getLastOutput(); + $output = $this->builder->getLastOutput(); list($errors, $warnings) = $this->processReport($output); - $this->phpci->logExecOutput(true); + $this->builder->logExecOutput(true); $success = true; $this->build->storeMeta('phpcs-warnings', $warnings); @@ -199,7 +199,7 @@ class PhpCodeSniffer extends Plugin implements ZeroConfigPlugin $data = json_decode(trim($output), true); if (!is_array($data)) { - $this->phpci->log($output); + $this->builder->log($output); throw new \Exception(PHPCensor\Helper\Lang::get('could_not_process_report')); } @@ -207,11 +207,11 @@ class PhpCodeSniffer extends Plugin implements ZeroConfigPlugin $warnings = $data['totals']['warnings']; foreach ($data['files'] as $fileName => $file) { - $fileName = str_replace($this->phpci->buildPath, '', $fileName); + $fileName = str_replace($this->builder->buildPath, '', $fileName); foreach ($file['messages'] as $message) { $this->build->reportError( - $this->phpci, + $this->builder, 'php_code_sniffer', 'PHPCS: ' . $message['message'], $message['type'] == 'ERROR' ? BuildError::SEVERITY_HIGH : BuildError::SEVERITY_LOW, diff --git a/src/PHPCensor/Plugin/PhpCpd.php b/src/PHPCensor/Plugin/PhpCpd.php index 3b77fa68..b9e0e49c 100644 --- a/src/PHPCensor/Plugin/PhpCpd.php +++ b/src/PHPCensor/Plugin/PhpCpd.php @@ -40,17 +40,17 @@ class PhpCpd extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->path = $this->phpci->buildPath; - $this->ignore = $this->phpci->ignore; + $this->path = $this->builder->buildPath; + $this->ignore = $this->builder->ignore; if (!empty($options['path'])) { - $this->path = $this->phpci->buildPath . $options['path']; + $this->path = $this->builder->buildPath . $options['path']; } - + if (!empty($options['ignore'])) { $this->ignore = $options['ignore']; } @@ -79,14 +79,14 @@ class PhpCpd extends Plugin $ignore = implode('', $ignore); } - $phpcpd = $this->phpci->findBinary('phpcpd'); + $phpcpd = $this->builder->findBinary('phpcpd'); $tmpfilename = tempnam('/tmp', 'phpcpd'); $cmd = $phpcpd . ' --log-pmd "%s" %s "%s"'; - $success = $this->phpci->executeCommand($cmd, $tmpfilename, $ignore, $this->path); + $success = $this->builder->executeCommand($cmd, $tmpfilename, $ignore, $this->path); - print $this->phpci->getLastOutput(); + print $this->builder->getLastOutput(); $errorCount = $this->processReport(file_get_contents($tmpfilename)); $this->build->storeMeta('phpcpd-warnings', $errorCount); @@ -107,7 +107,7 @@ class PhpCpd extends Plugin $xml = simplexml_load_string($xmlString); if ($xml === false) { - $this->phpci->log($xmlString); + $this->builder->log($xmlString); throw new \Exception(Lang::get('could_not_process_report')); } @@ -115,7 +115,7 @@ class PhpCpd extends Plugin foreach ($xml->duplication as $duplication) { foreach ($duplication->file as $file) { $fileName = (string)$file['path']; - $fileName = str_replace($this->phpci->buildPath, '', $fileName); + $fileName = str_replace($this->builder->buildPath, '', $fileName); $message = <<build->reportError( - $this->phpci, + $this->builder, 'php_cpd', $message, BuildError::SEVERITY_NORMAL, diff --git a/src/PHPCensor/Plugin/PhpCsFixer.php b/src/PHPCensor/Plugin/PhpCsFixer.php index c317db34..2f51618c 100644 --- a/src/PHPCensor/Plugin/PhpCsFixer.php +++ b/src/PHPCensor/Plugin/PhpCsFixer.php @@ -30,11 +30,11 @@ class PhpCsFixer extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->workingDir = $this->phpci->buildPath; + $this->workingDir = $this->builder->buildPath; $this->buildArgs($options); } @@ -47,10 +47,10 @@ class PhpCsFixer extends Plugin $curdir = getcwd(); chdir($this->workingDir); - $phpcsfixer = $this->phpci->findBinary('php-cs-fixer'); + $phpcsfixer = $this->builder->findBinary('php-cs-fixer'); $cmd = $phpcsfixer . ' fix . %s %s %s'; - $success = $this->phpci->executeCommand($cmd, $this->verbose, $this->diff, $this->level); + $success = $this->builder->executeCommand($cmd, $this->verbose, $this->diff, $this->level); chdir($curdir); @@ -76,7 +76,7 @@ class PhpCsFixer extends Plugin } if (isset($options['workingdir']) && $options['workingdir']) { - $this->workingDir = $this->phpci->buildPath . $options['workingdir']; + $this->workingDir = $this->builder->buildPath . $options['workingdir']; } } diff --git a/src/PHPCensor/Plugin/PhpDocblockChecker.php b/src/PHPCensor/Plugin/PhpDocblockChecker.php index b4711749..96d69272 100644 --- a/src/PHPCensor/Plugin/PhpDocblockChecker.php +++ b/src/PHPCensor/Plugin/PhpDocblockChecker.php @@ -41,11 +41,11 @@ class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; $this->path = ''; $this->allowed_warnings = 0; @@ -92,7 +92,7 @@ class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin public function execute() { // Check that the binary exists: - $checker = $this->phpci->findBinary('phpdoccheck'); + $checker = $this->builder->findBinary('phpdoccheck'); // Build ignore string: $ignore = ''; @@ -111,14 +111,14 @@ class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin } // Build command string: - $path = $this->phpci->buildPath . $this->path; + $path = $this->builder->buildPath . $this->path; $cmd = $checker . ' --json --directory="%s"%s%s'; // Disable exec output logging, as we don't want the XML report in the log: - $this->phpci->logExecOutput(false); + $this->builder->logExecOutput(false); // Run checker: - $this->phpci->executeCommand( + $this->builder->executeCommand( $cmd, $path, $ignore, @@ -126,9 +126,9 @@ class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin ); // Re-enable exec output logging: - $this->phpci->logExecOutput(true); + $this->builder->logExecOutput(true); - $output = json_decode($this->phpci->getLastOutput(), true); + $output = json_decode($this->builder->getLastOutput(), true); $errors = count($output); $success = true; @@ -158,7 +158,7 @@ class PhpDocblockChecker extends Plugin implements ZeroConfigPlugin } $this->build->reportError( - $this->phpci, + $this->builder, 'php_docblock_checker', $message, $severity, diff --git a/src/PHPCensor/Plugin/PhpLoc.php b/src/PHPCensor/Plugin/PhpLoc.php index 8a1dcd1d..69317d76 100644 --- a/src/PHPCensor/Plugin/PhpLoc.php +++ b/src/PHPCensor/Plugin/PhpLoc.php @@ -47,11 +47,11 @@ class PhpLoc extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->directory = $this->phpci->buildPath; + $this->directory = $this->builder->buildPath; if (isset($options['directory'])) { $this->directory .= $options['directory']; @@ -65,19 +65,19 @@ class PhpLoc extends Plugin implements ZeroConfigPlugin { $ignore = ''; - if (count($this->phpci->ignore)) { + if (count($this->builder->ignore)) { $map = function ($item) { return ' --exclude ' . rtrim($item, DIRECTORY_SEPARATOR); }; - $ignore = array_map($map, $this->phpci->ignore); + $ignore = array_map($map, $this->builder->ignore); $ignore = implode('', $ignore); } - $phploc = $this->phpci->findBinary('phploc'); + $phploc = $this->builder->findBinary('phploc'); - $success = $this->phpci->executeCommand($phploc . ' %s "%s"', $ignore, $this->directory); - $output = $this->phpci->getLastOutput(); + $success = $this->builder->executeCommand($phploc . ' %s "%s"', $ignore, $this->directory); + $output = $this->builder->getLastOutput(); if (preg_match_all('/\((LOC|CLOC|NCLOC|LLOC)\)\s+([0-9]+)/', $output, $matches)) { $data = []; diff --git a/src/PHPCensor/Plugin/PhpMessDetector.php b/src/PHPCensor/Plugin/PhpMessDetector.php index 11f55ff3..40894864 100644 --- a/src/PHPCensor/Plugin/PhpMessDetector.php +++ b/src/PHPCensor/Plugin/PhpMessDetector.php @@ -51,12 +51,12 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->suffixes = ['php']; - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; $this->path = ''; $this->rules = ['codesize', 'unusedcode', 'naming']; $this->allowed_warnings = 0; @@ -103,11 +103,11 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin return false; } - $phpmdBinaryPath = $this->phpci->findBinary('phpmd'); + $phpmdBinaryPath = $this->builder->findBinary('phpmd'); $this->executePhpMd($phpmdBinaryPath); - $errorCount = $this->processReport(trim($this->phpci->getLastOutput())); + $errorCount = $this->processReport(trim($this->builder->getLastOutput())); $this->build->storeMeta('phpmd-warnings', $errorCount); return $this->wasLastExecSuccessful($errorCount); @@ -127,8 +127,11 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin /** * Process PHPMD's XML output report. + * * @param $xmlString - * @return array + * + * @return integer + * * @throws \Exception */ protected function processReport($xmlString) @@ -136,7 +139,7 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin $xml = simplexml_load_string($xmlString); if ($xml === false) { - $this->phpci->log($xmlString); + $this->builder->log($xmlString); throw new \Exception('Could not process PHPMD report XML.'); } @@ -144,13 +147,13 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin foreach ($xml->file as $file) { $fileName = (string)$file['name']; - $fileName = str_replace($this->phpci->buildPath, '', $fileName); + $fileName = str_replace($this->builder->buildPath, '', $fileName); foreach ($file->violation as $violation) { $warnings++; $this->build->reportError( - $this->phpci, + $this->builder, 'php_mess_detector', (string)$violation, PHPCensor\Model\BuildError::SEVERITY_HIGH, @@ -165,19 +168,19 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin } /** - * Try and process the rules parameter from phpci.yml. + * Try and process the rules parameter from .php-censor.yml. * @return bool */ protected function tryAndProcessRules() { if (!empty($this->rules) && !is_array($this->rules)) { - $this->phpci->logFailure('The "rules" option must be an array.'); + $this->builder->logFailure('The "rules" option must be an array.'); return false; } foreach ($this->rules as &$rule) { if (strpos($rule, '/') !== false) { - $rule = $this->phpci->buildPath . $rule; + $rule = $this->builder->buildPath . $rule; } } @@ -205,10 +208,10 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin } // Disable exec output logging, as we don't want the XML report in the log: - $this->phpci->logExecOutput(false); + $this->builder->logExecOutput(false); // Run PHPMD: - $this->phpci->executeCommand( + $this->builder->executeCommand( $cmd, $path, implode(',', $this->rules), @@ -217,7 +220,7 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin ); // Re-enable exec output logging: - $this->phpci->logExecOutput(true); + $this->builder->logExecOutput(true); } /** @@ -226,7 +229,7 @@ class PhpMessDetector extends Plugin implements ZeroConfigPlugin */ protected function getTargetPath() { - $path = $this->phpci->buildPath . $this->path; + $path = $this->builder->buildPath . $this->path; if (!empty($this->path) && $this->path{0} == '/') { $path = $this->path; return $path; diff --git a/src/PHPCensor/Plugin/PhpParallelLint.php b/src/PHPCensor/Plugin/PhpParallelLint.php index f495e0cd..daf2dac5 100644 --- a/src/PHPCensor/Plugin/PhpParallelLint.php +++ b/src/PHPCensor/Plugin/PhpParallelLint.php @@ -34,15 +34,15 @@ class PhpParallelLint extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $this->directory = $this->phpci->buildPath; - $this->ignore = $this->phpci->ignore; + $this->directory = $this->builder->buildPath; + $this->ignore = $this->builder->ignore; if (isset($options['directory'])) { - $this->directory = $this->phpci->buildPath.$options['directory']; + $this->directory = $this->builder->buildPath.$options['directory']; } if (isset($options['ignore'])) { @@ -57,16 +57,16 @@ class PhpParallelLint extends Plugin { list($ignore) = $this->getFlags(); - $phplint = $this->phpci->findBinary('parallel-lint'); + $phplint = $this->builder->findBinary('parallel-lint'); $cmd = $phplint . ' %s "%s"'; - $success = $this->phpci->executeCommand( + $success = $this->builder->executeCommand( $cmd, $ignore, $this->directory ); - $output = $this->phpci->getLastOutput(); + $output = $this->builder->getLastOutput(); $matches = []; if (preg_match_all('/Parse error\:/', $output, $matches)) { @@ -84,7 +84,7 @@ class PhpParallelLint extends Plugin { $ignoreFlags = []; foreach ($this->ignore as $ignoreDir) { - $ignoreFlags[] = '--exclude "' . $this->phpci->buildPath . $ignoreDir . '"'; + $ignoreFlags[] = '--exclude "' . $this->builder->buildPath . $ignoreDir . '"'; } $ignore = implode(' ', $ignoreFlags); diff --git a/src/PHPCensor/Plugin/PhpSpec.php b/src/PHPCensor/Plugin/PhpSpec.php index 0f6d6a12..b6a21703 100644 --- a/src/PHPCensor/Plugin/PhpSpec.php +++ b/src/PHPCensor/Plugin/PhpSpec.php @@ -28,12 +28,12 @@ class PhpSpec extends Plugin public function execute() { $curdir = getcwd(); - chdir($this->phpci->buildPath); + chdir($this->builder->buildPath); - $phpspec = $this->phpci->findBinary(['phpspec', 'phpspec.php']); + $phpspec = $this->builder->findBinary(['phpspec', 'phpspec.php']); - $success = $this->phpci->executeCommand($phpspec . ' --format=junit --no-code-generation run'); - $output = $this->phpci->getLastOutput(); + $success = $this->builder->executeCommand($phpspec . ' --format=junit --no-code-generation run'); + $output = $this->builder->getLastOutput(); chdir($curdir); diff --git a/src/PHPCensor/Plugin/PhpTalLint.php b/src/PHPCensor/Plugin/PhpTalLint.php index 3a40f9fa..2a9e03cb 100644 --- a/src/PHPCensor/Plugin/PhpTalLint.php +++ b/src/PHPCensor/Plugin/PhpTalLint.php @@ -16,6 +16,7 @@ use PHPCensor\Plugin; /** * PHPTAL Lint Plugin - Provides access to PHPTAL lint functionality. + * * @author Stephen Ball * @package PHPCI * @subpackage Plugins @@ -50,13 +51,13 @@ class PhpTalLint extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->directories = ['']; $this->suffixes = ['zpt']; - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; $this->allowed_warnings = 0; $this->allowed_errors = 0; @@ -75,15 +76,15 @@ class PhpTalLint extends Plugin */ public function execute() { - $this->phpci->quiet = true; - $this->phpci->logExecOutput(false); + $this->builder->quiet = true; + $this->builder->logExecOutput(false); foreach ($this->directories as $dir) { $this->lintDirectory($dir); } - $this->phpci->quiet = false; - $this->phpci->logExecOutput(true); + $this->builder->quiet = false; + $this->builder->logExecOutput(true); $errors = 0; $warnings = 0; @@ -142,7 +143,7 @@ class PhpTalLint extends Plugin protected function lintDirectory($path) { $success = true; - $directory = new \DirectoryIterator($this->phpci->buildPath . $path); + $directory = new \DirectoryIterator($this->builder->buildPath . $path); foreach ($directory as $item) { if ($item->isDot()) { @@ -179,9 +180,9 @@ class PhpTalLint extends Plugin $lint .= 'tools' . DIRECTORY_SEPARATOR . 'phptal_lint.php'; $cmd = '/usr/bin/env php ' . $lint . ' %s %s "%s"'; - $this->phpci->executeCommand($cmd, $suffixes, $tales, $this->phpci->buildPath . $path); + $this->builder->executeCommand($cmd, $suffixes, $tales, $this->builder->buildPath . $path); - $output = $this->phpci->getLastOutput(); + $output = $this->builder->getLastOutput(); if (preg_match('/Found (.+?) (error|warning)/i', $output, $matches)) { $rows = explode(PHP_EOL, $output); @@ -224,7 +225,7 @@ class PhpTalLint extends Plugin { $tales = ''; if (!empty($this->tales)) { - $tales = ' -i ' . $this->phpci->buildPath . $this->tales; + $tales = ' -i ' . $this->builder->buildPath . $this->tales; } $suffixes = ''; diff --git a/src/PHPCensor/Plugin/PhpUnit.php b/src/PHPCensor/Plugin/PhpUnit.php index 5c8082e7..d2b18846 100644 --- a/src/PHPCensor/Plugin/PhpUnit.php +++ b/src/PHPCensor/Plugin/PhpUnit.php @@ -1,5 +1,4 @@ options = new PhpUnitOptions($options); } @@ -78,11 +77,11 @@ class PhpUnit extends Plugin implements ZeroConfigPlugin $xmlConfigFiles = $this->options->getConfigFiles($this->build->getBuildPath()); $directories = $this->options->getDirectories(); if (empty($xmlConfigFiles) && empty($directories)) { - $this->phpci->logFailure(Lang::get('phpunit_fail_init')); + $this->builder->logFailure(Lang::get('phpunit_fail_init')); return false; } - $success = array(); + $success = []; // Run any directories if (!empty($directories)) { @@ -119,9 +118,9 @@ class PhpUnit extends Plugin implements ZeroConfigPlugin // Removes any current configurations files $options->removeArgument('configuration'); - $arguments = $this->phpci->interpolate($options->buildArgumentString()); - $cmd = $this->phpci->findBinary('phpunit') . ' %s "%s"'; - $success = $this->phpci->executeCommand($cmd, $arguments, $directory); + $arguments = $this->builder->interpolate($options->buildArgumentString()); + $cmd = $this->builder->findBinary('phpunit') . ' %s "%s"'; + $success = $this->builder->executeCommand($cmd, $arguments, $directory); $this->processResults($jsonFile); @@ -149,9 +148,9 @@ class PhpUnit extends Plugin implements ZeroConfigPlugin // Only the add the configuration file been passed $options->addArgument('configuration', $buildPath . $configFile); - $arguments = $this->phpci->interpolate($options->buildArgumentString()); - $cmd = $this->phpci->findBinary('phpunit') . ' %s %s'; - $success = $this->phpci->executeCommand($cmd, $arguments, $options->getTestsPath()); + $arguments = $this->builder->interpolate($options->buildArgumentString()); + $cmd = $this->builder->findBinary('phpunit') . ' %s %s'; + $success = $this->builder->executeCommand($cmd, $arguments, $options->getTestsPath()); $this->processResults($jsonFile); @@ -176,7 +175,7 @@ class PhpUnit extends Plugin implements ZeroConfigPlugin foreach ($parser->getErrors() as $error) { $severity = $error['severity'] == $parser::SEVERITY_ERROR ? BuildError::SEVERITY_CRITICAL : BuildError::SEVERITY_HIGH; $this->build->reportError( - $this->phpci, 'php_unit', $error['message'], $severity, $error['file'], $error['line'] + $this->builder, 'php_unit', $error['message'], $severity, $error['file'], $error['line'] ); } @unlink($jsonFile); diff --git a/src/PHPCensor/Plugin/Shell.php b/src/PHPCensor/Plugin/Shell.php index b78d4578..dc3edba2 100644 --- a/src/PHPCensor/Plugin/Shell.php +++ b/src/PHPCensor/Plugin/Shell.php @@ -31,13 +31,13 @@ class Shell extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); if (isset($options['command'])) { // Keeping this for backwards compatibility, new projects should use interpolation vars. - $options['command'] = str_replace("%buildpath%", $this->phpci->buildPath, $options['command']); + $options['command'] = str_replace("%buildpath%", $this->builder->buildPath, $options['command']); $this->commands = [$options['command']]; return; } @@ -62,9 +62,9 @@ class Shell extends Plugin $success = true; foreach ($this->commands as $command) { - $command = $this->phpci->interpolate($command); + $command = $this->builder->interpolate($command); - if (!$this->phpci->executeCommand($command)) { + if (!$this->builder->executeCommand($command)) { $success = false; } } diff --git a/src/PHPCensor/Plugin/SlackNotify.php b/src/PHPCensor/Plugin/SlackNotify.php index d1408d77..7250a7ec 100644 --- a/src/PHPCensor/Plugin/SlackNotify.php +++ b/src/PHPCensor/Plugin/SlackNotify.php @@ -17,6 +17,7 @@ use Maknz\Slack\AttachmentField; /** * Slack Plugin + * * @author Stephen Ball * @package PHPCI * @subpackage Plugins @@ -33,9 +34,9 @@ class SlackNotify extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); if (is_array($options) && isset($options['webhook_url'])) { $this->webHook = trim($options['webhook_url']); @@ -80,7 +81,7 @@ class SlackNotify extends Plugin */ public function execute() { - $body = $this->phpci->interpolate($this->message); + $body = $this->builder->interpolate($this->message); $client = new Client($this->webHook); diff --git a/src/PHPCensor/Plugin/Sqlite.php b/src/PHPCensor/Plugin/Sqlite.php index 6de94530..6cd14e7d 100644 --- a/src/PHPCensor/Plugin/Sqlite.php +++ b/src/PHPCensor/Plugin/Sqlite.php @@ -35,11 +35,11 @@ class Sqlite extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $buildSettings = $this->phpci->getConfig('build_settings'); + $buildSettings = $this->builder->getConfig('build_settings'); if (isset($buildSettings['sqlite'])) { $sql = $buildSettings['sqlite']; @@ -58,10 +58,10 @@ class Sqlite extends Plugin $pdo = new PDO('sqlite:' . $this->path, $opts); foreach ($this->queries as $query) { - $pdo->query($this->phpci->interpolate($query)); + $pdo->query($this->builder->interpolate($query)); } } catch (\Exception $ex) { - $this->phpci->logFailure($ex->getMessage()); + $this->builder->logFailure($ex->getMessage()); return false; } return true; diff --git a/src/PHPCensor/Plugin/TechnicalDebt.php b/src/PHPCensor/Plugin/TechnicalDebt.php index de1d93fb..c941f550 100755 --- a/src/PHPCensor/Plugin/TechnicalDebt.php +++ b/src/PHPCensor/Plugin/TechnicalDebt.php @@ -58,14 +58,14 @@ class TechnicalDebt extends Plugin implements ZeroConfigPlugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->suffixes = ['php']; - $this->directory = $this->phpci->buildPath; + $this->directory = $this->builder->buildPath; $this->path = ''; - $this->ignore = $this->phpci->ignore; + $this->ignore = $this->builder->ignore; $this->allowed_errors = 0; $this->searches = ['TODO', 'FIXME', 'TO DO', 'FIX ME']; @@ -101,11 +101,11 @@ class TechnicalDebt extends Plugin implements ZeroConfigPlugin public function execute() { $success = true; - $this->phpci->logExecOutput(false); + $this->builder->logExecOutput(false); $errorCount = $this->getErrorList(); - $this->phpci->log("Found $errorCount instances of " . implode(', ', $this->searches)); + $this->builder->log("Found $errorCount instances of " . implode(', ', $this->searches)); $this->build->storeMeta('technical_debt-warnings', $errorCount); @@ -171,7 +171,7 @@ class TechnicalDebt extends Plugin implements ZeroConfigPlugin $fileName = str_replace($this->directory, '', $file); $this->build->reportError( - $this->phpci, + $this->builder, 'technical_debt', $content, PHPCensor\Model\BuildError::SEVERITY_LOW, diff --git a/src/PHPCensor/Plugin/Util/ComposerPluginInformation.php b/src/PHPCensor/Plugin/Util/ComposerPluginInformation.php index 7202ade0..d25baa57 100644 --- a/src/PHPCensor/Plugin/Util/ComposerPluginInformation.php +++ b/src/PHPCensor/Plugin/Util/ComposerPluginInformation.php @@ -6,6 +6,7 @@ use PHPCensor\Plugin; /** * Class ComposerPluginInformation + * * @package PHPCensor\Plugin\Util */ class ComposerPluginInformation implements InstalledPluginInformation @@ -34,15 +35,6 @@ class ComposerPluginInformation implements InstalledPluginInformation return new self($installed); } - /** - * @param \stdClass[] $composerPackages This should be the contents of the - * installed.json file created by composer - */ - public function __construct(array $composerPackages) - { - $this->composerPackages = $composerPackages; - } - /** * Returns an array of objects. Each one represents an available plugin * and will have the following properties: @@ -52,7 +44,6 @@ class ComposerPluginInformation implements InstalledPluginInformation */ public function getInstalledPlugins() { - $this->loadPluginInfo(); return $this->pluginInfo; } @@ -72,44 +63,6 @@ class ComposerPluginInformation implements InstalledPluginInformation ); } - /** - * Load a list of available plugins from the installed composer packages. - */ - protected function loadPluginInfo() - { - if ($this->pluginInfo !== null) { - return; - } - $this->pluginInfo = []; - foreach ($this->composerPackages as $package) { - $this->addPluginsFromPackage($package); - } - } - - /** - * @param \stdClass $package - */ - protected function addPluginsFromPackage($package) - { - if (isset($package->extra->phpci)) { - $phpciData = $package->extra->phpci; - - if (isset($phpciData->pluginNamespace)) { - $rootNamespace = $phpciData->pluginNamespace; - } else { - $rootNamespace = ""; - } - - if (is_array($phpciData->suppliedPlugins)) { - $this->addPlugins( - $phpciData->suppliedPlugins, - $package->name, - $rootNamespace - ); - } - } - } - /** * @param \stdClass[] $plugins * @param string $sourcePackageName diff --git a/src/PHPCensor/Plugin/Util/Executor.php b/src/PHPCensor/Plugin/Util/Executor.php index f37f6952..43c44577 100644 --- a/src/PHPCensor/Plugin/Util/Executor.php +++ b/src/PHPCensor/Plugin/Util/Executor.php @@ -20,7 +20,7 @@ class Executor /** * @var \PHPCensor\Builder */ - protected $phpci; + protected $builder; /** * @var \PHPCensor\Model\Build @@ -38,16 +38,16 @@ class Executor protected $store; /** - * @param Builder $phpci + * @param Builder $builder * @param Build $build * @param BuildLogger $logger */ - public function __construct(Builder $phpci, Build $build, BuildLogger $logger) + public function __construct(Builder $builder, Build $build, BuildLogger $logger) { - $this->phpci = $phpci; - $this->build = $build; - $this->logger = $logger; - $this->store = StoreFactory::getStore('Build'); + $this->builder = $builder; + $this->build = $build; + $this->logger = $logger; + $this->store = StoreFactory::getStore('Build'); } /** @@ -199,7 +199,7 @@ class Executor } try { - return (new $class($this->phpci, $this->build, $options))->execute(); + return (new $class($this->builder, $this->build, $options))->execute(); } catch (\Exception $ex) { $this->logger->logFailure(Lang::get('exception') . $ex->getMessage(), $ex); diff --git a/src/PHPCensor/Plugin/Util/TestResultParsers/Codeception.php b/src/PHPCensor/Plugin/Util/TestResultParsers/Codeception.php index 4a8347d9..346099f5 100644 --- a/src/PHPCensor/Plugin/Util/TestResultParsers/Codeception.php +++ b/src/PHPCensor/Plugin/Util/TestResultParsers/Codeception.php @@ -12,23 +12,21 @@ use PHPCensor\Builder; */ class Codeception implements ParserInterface { - protected $phpci; + protected $builder; protected $resultsXml; - protected $results; - protected $totalTests; protected $totalTimeTaken; protected $totalFailures; protected $totalErrors; /** - * @param Builder $phpci + * @param Builder $builder * @param $resultsXml */ - public function __construct(Builder $phpci, $resultsXml) + public function __construct(Builder $builder, $resultsXml) { - $this->phpci = $phpci; + $this->builder = $builder; $this->resultsXml = $resultsXml; $this->totalTests = 0; } @@ -51,7 +49,7 @@ class Codeception implements ParserInterface foreach ($test_suite->testcase as $test_case) { $test_result = [ 'suite' => (string)$test_suite['name'], - 'file' => str_replace($this->phpci->buildPath, '/', (string) $test_case['file']), + 'file' => str_replace($this->builder->buildPath, '/', (string) $test_case['file']), 'name' => (string)$test_case['name'], 'feature' => (string)$test_case['feature'], 'assertions' => (int)$test_case['assertions'], diff --git a/src/PHPCensor/Plugin/Wipe.php b/src/PHPCensor/Plugin/Wipe.php index 014302ed..c72fb5a0 100644 --- a/src/PHPCensor/Plugin/Wipe.php +++ b/src/PHPCensor/Plugin/Wipe.php @@ -26,12 +26,12 @@ class Wipe extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); - $path = $this->phpci->buildPath; - $this->directory = isset($options['directory']) ? $this->phpci->interpolate($options['directory']) : $path; + $path = $this->builder->buildPath; + $this->directory = isset($options['directory']) ? $this->builder->interpolate($options['directory']) : $path; } /** @@ -39,7 +39,7 @@ class Wipe extends Plugin */ public function execute() { - $build = $this->phpci->buildPath; + $build = $this->builder->buildPath; if ($this->directory == $build || empty($this->directory)) { return true; @@ -49,7 +49,7 @@ class Wipe extends Plugin if (IS_WIN) { $cmd = 'rmdir /S /Q "%s"'; } - return $this->phpci->executeCommand($cmd, $this->directory); + return $this->builder->executeCommand($cmd, $this->directory); } return true; } diff --git a/src/PHPCensor/Plugin/Xmpp.php b/src/PHPCensor/Plugin/Xmpp.php index 02d173c8..cc9c5c68 100644 --- a/src/PHPCensor/Plugin/Xmpp.php +++ b/src/PHPCensor/Plugin/Xmpp.php @@ -61,9 +61,9 @@ class XMPP extends Plugin /** * {@inheritdoc} */ - public function __construct(Builder $phpci, Build $build, array $options = []) + public function __construct(Builder $builder, Build $build, array $options = []) { - parent::__construct($phpci, $build, $options); + parent::__construct($builder, $build, $options); $this->username = ''; $this->password = ''; @@ -111,8 +111,8 @@ class XMPP extends Plugin */ public function findConfigFile() { - if (file_exists($this->phpci->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc')) { - if (md5(file_get_contents($this->phpci->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc')) + if (file_exists($this->builder->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc')) { + if (md5(file_get_contents($this->builder->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc')) !== md5($this->getConfigFormat())) { return null; } @@ -128,7 +128,7 @@ class XMPP extends Plugin */ public function execute() { - $sendxmpp = $this->phpci->findBinary('sendxmpp'); + $sendxmpp = $this->builder->findBinary('sendxmpp'); /* * Without recipients we can't send notification @@ -140,7 +140,7 @@ class XMPP extends Plugin /* * Try to build conf file */ - $config_file = $this->phpci->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc'; + $config_file = $this->builder->buildPath . DIRECTORY_SEPARATOR . '.sendxmpprc'; if (is_null($this->findConfigFile())) { file_put_contents($config_file, $this->getConfigFormat()); chmod($config_file, 0600); @@ -154,7 +154,7 @@ class XMPP extends Plugin $tls = ' -t'; } - $message_file = $this->phpci->buildPath . DIRECTORY_SEPARATOR . uniqid('xmppmessage'); + $message_file = $this->builder->buildPath . DIRECTORY_SEPARATOR . uniqid('xmppmessage'); if ($this->buildMessage($message_file) === false) { return false; } @@ -165,14 +165,14 @@ class XMPP extends Plugin $cmd = $sendxmpp . "%s -f %s -m %s %s"; $recipients = implode(' ', $this->recipients); - $success = $this->phpci->executeCommand($cmd, $tls, $config_file, $message_file, $recipients); + $success = $this->builder->executeCommand($cmd, $tls, $config_file, $message_file, $recipients); - print $this->phpci->getLastOutput(); + print $this->builder->getLastOutput(); /* * Remove temp message file */ - $this->phpci->executeCommand("rm -rf ".$message_file); + $this->builder->executeCommand("rm -rf ".$message_file); return $success; }