From 1baa4d6017fb3d68a6304fed7990a35397cc3ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Sacrist=C3=A1n?= Date: Thu, 9 Apr 2020 01:31:28 +0200 Subject: [PATCH 1/2] Add a new JSON format response so it can be used as an API. --- bin/phpcs-diff | 19 +++++++++++++++++-- inc/Main.php | 3 +++ inc/log/LoggerInterface.php | 7 +++++++ inc/log/ShellLogger.php | 14 ++++++++++++-- inc/log/WpcliLogger.php | 14 ++++++++++++++ 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/bin/phpcs-diff b/bin/phpcs-diff index 89c3d43..7a55fa5 100755 --- a/bin/phpcs-diff +++ b/bin/phpcs-diff @@ -29,7 +29,6 @@ const OUTPUT_UNDERLINED = "\033[4m"; const OUTPUT_UNUNDERLINED = "\033[24m"; $logo = file_get_contents( PHPCS_DIFF_PLUGIN_DIR . '/logo' ); -echo "\n$logo\n" . OUTPUT_UNDERLINED . COLOUR_SECONDARY . 'https://github.com/zaantar/phpcs-diff' . OUTPUT_RESET . "\n\n"; require_once PHPCS_DIFF_PLUGIN_DIR . '/vendor/autoload.php'; @@ -48,6 +47,7 @@ $getopt = new GetOpt( [ 'excluded_exts', GetOpt::OPTIONAL_ARGUMENT ], [ 'standards_location', GetOpt::OPTIONAL_ARGUMENT ], [ 'default_standards_location', GetOpt::NO_ARGUMENT ], + [ 'format', GetOpt::OPTIONAL_ARGUMENT ], ] ); @@ -83,6 +83,8 @@ $no_colours = $getopt->offsetExists( 'no_colours' ); $excluded_exts = $getopt->getOption( 'excluded_exts' ); $standards_location = $getopt->getOption( 'standards_location' ); $default_standards_location = $getopt->getOption( 'default_standards_location' ); +$format = $getopt->getOption( 'format' ); +$do_echo = $format !== 'json'; $sniff_unstaged = $getopt->offsetExists( 'sniff_unstaged' ); if ( $sniff_unstaged ) { @@ -137,11 +139,15 @@ if( $default_standards_location ) { } $logger = new Log\ShellLogger( (int) $log_level ); -$options = [ 'ignore-space-change' => $ignore_space_changes, 'standards_location' => $standards_location ]; +$options = [ 'ignore-space-change' => $ignore_space_changes, 'standards_location' => $standards_location, 'format' => $format ]; $version_control = new Backends\Git( '', $logger, $options ); $controller = new Main( $version_control, $logger, $options ); $controller->set_phpcs_standard( $phpcs_standard ); +if ( $do_echo ) { + echo "\n$logo\n" . OUTPUT_UNDERLINED . COLOUR_SECONDARY . 'https://github.com/zaantar/phpcs-diff' . OUTPUT_RESET . "\n\n"; +} + try { $found_issues = $controller->run( $start_revision, $end_revision, '', $excluded_exts ); } catch ( \Exception $e ) { @@ -201,6 +207,15 @@ function echo_chapter( $title, $items ) { echo PHP_EOL; } +if ( $format === 'json' ) { + echo json_encode( array( + 'blockers' => $blockers, + 'warnings' => $warnings, + 'notes' => $notes, + ) ); + exit(); +} + echo PHP_EOL; echo_chapter( 'Blockers', $blockers ); echo_chapter( 'Warnings', $warnings ); diff --git a/inc/Main.php b/inc/Main.php index 29ff99d..01270fb 100755 --- a/inc/Main.php +++ b/inc/Main.php @@ -26,6 +26,8 @@ class Main { private $no_diff_to_big = false; + private $format = false; + /** @var LoggerInterface */ private $log; @@ -50,6 +52,7 @@ public function __construct( $version_control, LoggerInterface $log, $options = $this->allowed_extensions = array( 'php', 'js' ); $this->log = $log; + $this->log->set_enable( $this->format !== 'json' ); } public function set_nocache( $nocache = false ) { diff --git a/inc/log/LoggerInterface.php b/inc/log/LoggerInterface.php index 05bdeff..d205d49 100755 --- a/inc/log/LoggerInterface.php +++ b/inc/log/LoggerInterface.php @@ -23,4 +23,11 @@ interface LoggerInterface { */ public function log( $severity, $message ); + /** + * @param $enable boolea + * + * @return void + */ + public function set_enable( $enable ); + } \ No newline at end of file diff --git a/inc/log/ShellLogger.php b/inc/log/ShellLogger.php index 773f46c..b76e660 100755 --- a/inc/log/ShellLogger.php +++ b/inc/log/ShellLogger.php @@ -6,7 +6,7 @@ class ShellLogger implements LoggerInterface { private $log_level; - + private $enable = true; public function __construct( $log_level = LoggerInterface::WARNING ) { $this->log_level = $log_level; @@ -20,7 +20,7 @@ public function __construct( $log_level = LoggerInterface::WARNING ) { */ public function log( $severity, $message ) { - if( $this->log_level > $severity ) { + if( $this->log_level > $severity || ! $this->enable ) { return; } @@ -36,4 +36,14 @@ public function log( $severity, $message ) { break; } } + + /** + * @param $enable boolea + * + * @return void + */ + public function set_enable( $enable ) { + $this->enable = $enable; + } + } \ No newline at end of file diff --git a/inc/log/WpcliLogger.php b/inc/log/WpcliLogger.php index dfd0d39..c3166da 100755 --- a/inc/log/WpcliLogger.php +++ b/inc/log/WpcliLogger.php @@ -10,6 +10,7 @@ * @package PHPCSDiff\Log */ class WpcliLogger implements LoggerInterface { + private $enable = true; /** @noinspection PhpDocMissingThrowsInspection */ /** @@ -19,6 +20,10 @@ class WpcliLogger implements LoggerInterface { * @return void */ public function log( $severity, $message ) { + if ( ! $this->enable ) { + return; + } + switch( $severity ) { case LoggerInterface::ERROR: /** @noinspection PhpUnhandledExceptionInspection */ @@ -34,4 +39,13 @@ public function log( $severity, $message ) { } } + /** + * @param $enable boolea + * + * @return void + */ + public function set_enable( $enable ) { + $this->enable = $enable; + } + } \ No newline at end of file From c9061d35ab6326e35f9b25af536c5a5d23a358d9 Mon Sep 17 00:00:00 2001 From: jan Date: Mon, 11 May 2020 12:57:28 +0200 Subject: [PATCH 2/2] Update coding standard packages. --- composer.lock | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index c06de7b..ae7b538 100755 --- a/composer.lock +++ b/composer.lock @@ -169,12 +169,12 @@ "source": { "type": "git", "url": "https://github.com/OnTheGoSystems/toolset-coding-standards.git", - "reference": "4b5e1b3210fc7d02130a0c4ad62fb58acc9315c8" + "reference": "1b69fd710f965b3a37f9c5415345151deccc6898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OnTheGoSystems/toolset-coding-standards/zipball/4b5e1b3210fc7d02130a0c4ad62fb58acc9315c8", - "reference": "4b5e1b3210fc7d02130a0c4ad62fb58acc9315c8", + "url": "https://api.github.com/repos/OnTheGoSystems/toolset-coding-standards/zipball/1b69fd710f965b3a37f9c5415345151deccc6898", + "reference": "1b69fd710f965b3a37f9c5415345151deccc6898", "shasum": "" }, "require": { @@ -209,7 +209,7 @@ "phpcs", "standards" ], - "time": "2020-03-10T10:58:10+00:00" + "time": "2020-05-11T10:43:31+00:00" }, { "name": "sebastian/diff", @@ -369,12 +369,12 @@ "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1dbc333797a43c3e36697c24c66d3c1f8364faa2" + "reference": "ce62dee92da3b038a399a99353fc055b39d2853e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1dbc333797a43c3e36697c24c66d3c1f8364faa2", - "reference": "1dbc333797a43c3e36697c24c66d3c1f8364faa2", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ce62dee92da3b038a399a99353fc055b39d2853e", + "reference": "ce62dee92da3b038a399a99353fc055b39d2853e", "shasum": "" }, "require": { @@ -412,7 +412,7 @@ "phpcs", "standards" ], - "time": "2020-03-09T21:32:33+00:00" + "time": "2020-05-01T04:18:46+00:00" }, { "name": "ulrichsg/getopt-php", @@ -517,5 +517,6 @@ "platform": { "php": "^7" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" }