Skip to content

Commit cac17b4

Browse files
committed
Further updates
1 parent 1b411d6 commit cac17b4

7 files changed

Lines changed: 76 additions & 16 deletions

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"wp-cli/db-command": "^1.3 || ^2",
1919
"wp-cli/entity-command": "^1.3 || ^2",
2020
"wp-cli/extension-command": "^1.2 || ^2",
21-
"wp-cli/wp-cli-tests": "dev-main"
21+
"wp-cli/wp-cli-tests": "dev-add/phpstan-enhancements"
2222
},
2323
"config": {
2424
"process-timeout": 7200,

phpstan.neon.dist

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ parameters:
99
scanFiles:
1010
- vendor/php-stubs/wordpress-stubs/wordpress-stubs.php
1111
treatPhpDocTypesAsCertain: false
12-
dynamicConstantNames:
13-
- WP_DEBUG
14-
- WP_DEBUG_LOG
15-
- WP_DEBUG_DISPLAY
12+
strictRules:
13+
uselessCast: true
14+
closureUsesThis: true
15+
overwriteVariablesWithLoop: true
16+
matchingInheritedMethodNames: true
17+
numericOperandsInArithmeticOperators: true
18+
switchConditionsMatchingType: true
1619
ignoreErrors:
1720
- identifier: missingType.iterableValue
1821
- identifier: missingType.property

src/Core_Language_Command.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ class Core_Language_Command extends WP_CLI\CommandWithTranslation {
9393
* | az | Azerbaijani | uninstalled |
9494
*
9595
* @subcommand list
96+
*
97+
* @param string[] $args Positional arguments. Unused.
98+
* @param array{field?: string, format: string, language?: string, english_name?: string, native_name?: string, status?: string, update?: string, updated?: string} $assoc_args Associative arguments.
9699
*/
97100
public function list_( $args, $assoc_args ) {
98101
$translations = $this->get_all_languages();
@@ -154,8 +157,10 @@ function ( $translation ) use ( $available, $current_locale, $updates ) {
154157
* 1
155158
*
156159
* @subcommand is-installed
160+
*
161+
* @param array{string} $args Positional arguments.
157162
*/
158-
public function is_installed( $args, $assoc_args = array() ) {
163+
public function is_installed( $args ) {
159164
list( $language_code ) = $args;
160165
$available = $this->get_installed_languages();
161166
if ( in_array( $language_code, $available, true ) ) {
@@ -191,6 +196,9 @@ public function is_installed( $args, $assoc_args = array() ) {
191196
* Success: Installed 1 of 1 languages.
192197
*
193198
* @subcommand install
199+
*
200+
* @param string[] $args Positional arguments.
201+
* @param array{activate?: bool} $assoc_args Associative arguments.
194202
*/
195203
public function install( $args, $assoc_args ) {
196204
$language_codes = (array) $args;
@@ -253,8 +261,10 @@ public function install( $args, $assoc_args ) {
253261
*
254262
* @subcommand uninstall
255263
* @throws WP_CLI\ExitException
264+
*
265+
* @param string[] $args Positional arguments.
256266
*/
257-
public function uninstall( $args, $assoc_args ) {
267+
public function uninstall( $args ) {
258268
global $wp_filesystem;
259269

260270
$dir = 'core' === $this->obj_type ? '' : "/$this->obj_type";
@@ -339,6 +349,9 @@ public function uninstall( $args, $assoc_args ) {
339349
* Success: Updated 1/1 translation.
340350
*
341351
* @subcommand update
352+
*
353+
* @param string[] $args Positional arguments.
354+
* @param array{'dry-run'?: bool} $assoc_args Associative arguments.
342355
*/
343356
public function update( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnalysis.UselessOverridingMethod.Found -- Overruling the documentation, so not useless ;-).
344357
parent::update( $args, $assoc_args );
@@ -362,8 +375,10 @@ public function update( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnaly
362375
*
363376
* @subcommand activate
364377
* @throws WP_CLI\ExitException
378+
*
379+
* @param array{string} $args Positional arguments.
365380
*/
366-
public function activate( $args, $assoc_args ) {
381+
public function activate( $args ) {
367382
\WP_CLI::warning( 'This command is deprecated. use wp site switch-language instead' );
368383

369384
list( $language_code ) = $args;

src/Plugin_Language_Command.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ class Plugin_Language_Command extends WP_CLI\CommandWithTranslation {
103103
* | az | Azerbaijani | uninstalled |
104104
*
105105
* @subcommand list
106+
*
107+
* @param string[] $args Positional arguments.
108+
* @param array{all?: bool, field?: string, format: string, plugin?: string, language?: string, english_name?: string, native_name?: string, status?: string, update?: string, updated?: string} $assoc_args Associative arguments.
106109
*/
107110
public function list_( $args, $assoc_args ) {
108111
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );
@@ -154,7 +157,7 @@ public function list_( $args, $assoc_args ) {
154157

155158
// Support features like --status=active.
156159
foreach ( array_keys( $translation ) as $field ) {
157-
if ( isset( $assoc_args[ $field ] ) && ! in_array( $translation[ $field ], array_map( 'trim', explode( ',', $assoc_args[ $field ] ) ), true ) ) {
160+
if ( isset( $assoc_args[ $field ] ) && ! in_array( $translation[ $field ], array_map( 'trim', explode( ',', (string) $assoc_args[ $field ] ) ), true ) ) {
158161
continue 2;
159162
}
160163
}
@@ -188,10 +191,12 @@ public function list_( $args, $assoc_args ) {
188191
* 1
189192
*
190193
* @subcommand is-installed
194+
*
195+
* @param non-empty-array<string> $args Positional arguments.
191196
*/
192-
public function is_installed( $args, $assoc_args = array() ) {
197+
public function is_installed( $args ) {
193198
$plugin = array_shift( $args );
194-
$language_codes = (array) $args;
199+
$language_codes = $args;
195200

196201
$available = $this->get_installed_languages( $plugin );
197202

@@ -244,6 +249,9 @@ public function is_installed( $args, $assoc_args = array() ) {
244249
* Success: Installed 1 of 1 languages.
245250
*
246251
* @subcommand install
252+
*
253+
* @param string[] $args Positional arguments.
254+
* @param array{all?: bool, format: string} $assoc_args Associative arguments.
247255
*/
248256
public function install( $args, $assoc_args ) {
249257
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );
@@ -267,7 +275,7 @@ public function install( $args, $assoc_args ) {
267275
*/
268276
private function install_one( $args, $assoc_args ) {
269277
$plugin = array_shift( $args );
270-
$language_codes = (array) $args;
278+
$language_codes = $args;
271279
$count = count( $language_codes );
272280

273281
$available = $this->get_installed_languages( $plugin );
@@ -419,6 +427,9 @@ private function install_many( $args, $assoc_args ) {
419427
* Success: Uninstalled 1 of 1 languages.
420428
*
421429
* @subcommand uninstall
430+
*
431+
* @param string[] $args Positional arguments.
432+
* @param array{all?: bool, format: string} $assoc_args Associative arguments.
422433
*/
423434
public function uninstall( $args, $assoc_args ) {
424435
/** @var WP_Filesystem_Base $wp_filesystem */
@@ -471,6 +482,9 @@ public function uninstall( $args, $assoc_args ) {
471482
$errors = 0;
472483
$skips = 0;
473484

485+
/**
486+
* @var string $plugin
487+
*/
474488
foreach ( $plugins as $plugin ) {
475489
$available = $this->get_installed_languages( $plugin );
476490

@@ -584,6 +598,9 @@ public function uninstall( $args, $assoc_args ) {
584598
* Success: Updated 1/1 translation.
585599
*
586600
* @subcommand update
601+
*
602+
* @param string[] $args Positional arguments.
603+
* @param array{'dry-run'?: bool, all?: bool} $assoc_args Associative arguments.
587604
*/
588605
public function update( $args, $assoc_args ) {
589606
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );

src/Theme_Language_Command.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ class Theme_Language_Command extends WP_CLI\CommandWithTranslation {
103103
* | az | Azerbaijani | uninstalled |
104104
*
105105
* @subcommand list
106+
*
107+
* @param string[] $args Positional arguments.
108+
* @param array{all?: bool, field?: string, format: string, theme?: string, language?: string, english_name?: string, native_name?: string, status?: string, update?: string, updated?: string} $assoc_args Associative arguments.
106109
*/
107110
public function list_( $args, $assoc_args ) {
108111
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );
@@ -194,8 +197,10 @@ function ( $file ) {
194197
* 1
195198
*
196199
* @subcommand is-installed
200+
*
201+
* @param non-empty-array<string> $args Positional arguments.
197202
*/
198-
public function is_installed( $args, $assoc_args = array() ) {
203+
public function is_installed( $args ) {
199204
$theme = array_shift( $args );
200205
$language_codes = (array) $args;
201206

@@ -249,6 +254,9 @@ public function is_installed( $args, $assoc_args = array() ) {
249254
* Success: Installed 1 of 1 languages.
250255
*
251256
* @subcommand install
257+
*
258+
* @param string[] $args Positional arguments.
259+
* @param array{all?: bool, format: string} $assoc_args Associative arguments.
252260
*/
253261
public function install( $args, $assoc_args ) {
254262
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );
@@ -272,7 +280,7 @@ public function install( $args, $assoc_args ) {
272280
*/
273281
private function install_one( $args, $assoc_args ) {
274282
$theme = array_shift( $args );
275-
$language_codes = (array) $args;
283+
$language_codes = $args;
276284
$count = count( $language_codes );
277285

278286
$available = $this->get_installed_languages( $theme );
@@ -432,6 +440,9 @@ private function install_many( $args, $assoc_args ) {
432440
* Success: Uninstalled 1 of 1 languages.
433441
*
434442
* @subcommand uninstall
443+
*
444+
* @param string[] $args Positional arguments.
445+
* @param array{all?: bool, format: string} $assoc_args Associative arguments.
435446
*/
436447
public function uninstall( $args, $assoc_args ) {
437448
/** @var WP_Filesystem_Base $wp_filesystem */
@@ -490,6 +501,9 @@ public function uninstall( $args, $assoc_args ) {
490501
// As of WP 4.0, no API for deleting a language pack
491502
WP_Filesystem();
492503

504+
/**
505+
* @var string $theme
506+
*/
493507
foreach ( $process_themes as $theme ) {
494508
$available_languages = $this->get_installed_languages( $theme );
495509

@@ -603,6 +617,9 @@ public function uninstall( $args, $assoc_args ) {
603617
* Success: Updated 1/1 translation.
604618
*
605619
* @subcommand update
620+
*
621+
* @param string[] $args Positional arguments.
622+
* @param array{'dry-run'?: bool, all?: bool} $assoc_args Associative arguments.
606623
*/
607624
public function update( $args, $assoc_args ) {
608625
$all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false );

src/WP_CLI/CommandWithTranslation.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ protected function sort_translations_callback( $a, $b ) {
2424

2525
/**
2626
* Updates installed languages for the current object type.
27+
*
28+
* @param string[] $args Positional arguments.
29+
* @param array{'dry-run'?: bool, all?: bool} $assoc_args Associative arguments.
2730
*/
2831
public function update( $args, $assoc_args ) {
2932
$updates = $this->get_translation_updates();
@@ -274,9 +277,12 @@ protected function download_language_pack( $download, $slug = null ) {
274277
*
275278
* @param string $slug Optional. Plugin or theme slug. Defaults to 'default' for core.
276279
*
277-
* @return array
280+
* @return string[]
278281
*/
279282
protected function get_installed_languages( $slug = 'default' ) {
283+
/**
284+
* @var array<string, array<string, array<string, mixed>>> $available
285+
*/
280286
$available = wp_get_installed_translations( $this->obj_type );
281287
$available = ! empty( $available[ $slug ] ) ? array_keys( $available[ $slug ] ) : array();
282288
$available[] = 'en_US';
@@ -289,7 +295,7 @@ protected function get_installed_languages( $slug = 'default' ) {
289295
*
290296
* @param string $slug Optional. Plugin or theme slug. Not used for core.
291297
*
292-
* @return array
298+
* @return array<array{language: string, english_name: string, native_name: string, updated: string}>
293299
*/
294300
protected function get_all_languages( $slug = null ) {
295301
require_once ABSPATH . '/wp-admin/includes/translation-install.php';

src/WP_CLI/LanguagePackUpgrader.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ class LanguagePackUpgrader extends \Language_Pack_Upgrader {
1414
* The upgrader skin being used.
1515
*
1616
* @var \Language_Pack_Upgrader_Skin $skin
17+
*
18+
* @phpstan-ignore property.phpDocType
1719
*/
1820
public $skin = null;
1921

0 commit comments

Comments
 (0)