Skip to content

Commit e8786b9

Browse files
refactor(cli): refactor CLI registration and improve optimization handling
- Convert CLI class to use static registration method - Add proper return value handling for optimization results - Integrate CLI initialization into base WP class hook system - Add is_cli() helper method to base class - Improve optimization counting by checking success results - Add documentation for optimize_attachment method return type
1 parent 1ecefe0 commit e8786b9

4 files changed

Lines changed: 34 additions & 24 deletions

File tree

src/class-tiny-cli.php

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,8 @@
1919
*/
2020

2121
class Tiny_Cli {
22-
23-
/**
24-
* Tinify Settings
25-
*
26-
* @var Tiny_Settings
27-
*/
28-
private $tiny_settings;
29-
30-
public function __construct( $settings ) {
31-
$this->tiny_settings = $settings;
32-
33-
// Only add CLI hooks when WP-CLI is available
34-
if ( defined( 'WP_CLI' ) && WP_CLI ) {
35-
add_action( 'cli_init', array( $this, 'register_command' ) );
36-
}
37-
}
38-
39-
public function register_command() {
40-
$command_instance = new Tiny_Command( $this->tiny_settings );
22+
public static function register_command( $settings ) {
23+
$command_instance = new Tiny_Command( $settings );
4124
WP_CLI::add_command( 'tiny', $command_instance );
4225
}
4326
}
@@ -105,8 +88,10 @@ public function optimize( $args, $assoc_args ) {
10588
}
10689

10790
try {
108-
$this->optimize_attachment( $attachment_id );
109-
$optimized++;
91+
$result = $this->optimize_attachment( $attachment_id );
92+
if ( isset( $result['success'] ) && $result['success'] > 0 ) {
93+
$optimized++;
94+
}
11095
} catch ( Exception $e ) {
11196
WP_CLI::warning(
11297
'skipping - error: ' .
@@ -140,9 +125,14 @@ private function get_unoptimized_attachments() {
140125
return $ids;
141126
}
142127

128+
/**
129+
* Will process an attachment for optimization
130+
*
131+
* @return array{ success: int, failed: int }
132+
*/
143133
private function optimize_attachment( $attachment_id ) {
144134
$tiny_image = new Tiny_Image( $this->tiny_settings, $attachment_id );
145-
$tiny_image->compress();
135+
return $tiny_image->compress();
146136
}
147137

148138
private function is_valid_attachment( $attachment_id ) {

src/class-tiny-plugin.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,15 @@ public function init() {
6666
dirname( plugin_basename( __FILE__ ) ) . '/languages'
6767
);
6868

69-
new Tiny_CLI( $this->settings );
70-
7169
if ( $this->settings->get_conversion_enabled() ) {
7270
new Tiny_Picture( ABSPATH, array( get_site_url() ) );
7371
}
7472
}
7573

74+
public function cli_init() {
75+
Tiny_CLI::register_command( $this->settings );
76+
}
77+
7678
public function ajax_init() {
7779
add_filter( 'wp_ajax_tiny_async_optimize_upload_new_media',
7880
$this->get_method( 'compress_on_upload' )

src/class-tiny-settings.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ public function xmlrpc_init() {
5050
}
5151
}
5252

53+
public function cli_init() {
54+
try {
55+
$this->init_compressor();
56+
} catch ( Tiny_Exception $e ) {
57+
}
58+
}
59+
5360
public function ajax_init() {
5461
try {
5562
$this->init_compressor();

src/class-tiny-wp-base.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ protected function doing_ajax_request() {
4949
return defined( 'DOING_AJAX' ) && DOING_AJAX;
5050
}
5151

52+
protected function is_cli() {
53+
return defined( 'WP_CLI' ) && WP_CLI;
54+
}
55+
5256
protected static function get_prefixed_name( $name ) {
5357
return self::PREFIX . $name;
5458
}
@@ -65,6 +69,10 @@ public function __construct() {
6569
add_action( 'admin_init', $this->get_method( 'admin_init' ) );
6670
add_action( 'admin_menu', $this->get_method( 'admin_menu' ) );
6771
}
72+
73+
if ( self::is_cli() ) {
74+
add_action( 'cli_init', $this->get_method( 'cli_init' ) );
75+
}
6876
}
6977

7078
protected function get_method( $name ) {
@@ -100,4 +108,7 @@ public function admin_menu() {
100108

101109
public function rest_init() {
102110
}
111+
112+
public function cli_init() {
113+
}
103114
}

0 commit comments

Comments
 (0)