Skip to content

Commit 18f5bd4

Browse files
committed
PHPCS: Address feedbacks for package command
1 parent 243d1eb commit 18f5bd4

2 files changed

Lines changed: 88 additions & 76 deletions

File tree

src/Package_Command.php

Lines changed: 83 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
<?php
22

3-
use \Composer\Composer;
4-
use \Composer\Config;
5-
use \Composer\Config\JsonConfigSource;
6-
use \Composer\DependencyResolver\Pool;
7-
use \Composer\EventDispatcher\Event;
8-
use \Composer\Factory;
9-
use \Composer\IO\NullIO;
10-
use \Composer\Installer;
11-
use \Composer\Json\JsonFile;
12-
use \Composer\Package;
13-
use \Composer\Package\BasePackage;
14-
use \Composer\Package\PackageInterface;
15-
use \Composer\Package\Version\VersionParser;
16-
use \Composer\Package\Version\VersionSelector;
17-
use \Composer\Repository;
18-
use \Composer\Repository\CompositeRepository;
19-
use \Composer\Repository\ComposerRepository;
20-
use \Composer\Repository\RepositoryManager;
21-
use \Composer\Util\Filesystem;
3+
use Composer\Composer;
4+
use Composer\Config;
5+
use Composer\Config\JsonConfigSource;
6+
use Composer\DependencyResolver\Pool;
7+
use Composer\EventDispatcher\Event;
8+
use Composer\Factory;
9+
use Composer\IO\NullIO;
10+
use Composer\Installer;
11+
use Composer\Json\JsonFile;
12+
use Composer\Package;
13+
use Composer\Package\BasePackage;
14+
use Composer\Package\PackageInterface;
15+
use Composer\Package\Version\VersionParser;
16+
use Composer\Package\Version\VersionSelector;
17+
use Composer\Repository;
18+
use Composer\Repository\CompositeRepository;
19+
use Composer\Repository\ComposerRepository;
20+
use Composer\Repository\RepositoryManager;
21+
use Composer\Util\Filesystem;
2222
use WP_CLI\ComposerIO;
2323
use WP_CLI\Extractor;
2424
use WP_CLI\Utils;
2525
use WP_CLI\JsonManipulator;
26+
use WP_CLI\PackageManagerEventSubscriber;
2627

2728
/**
2829
* Lists, installs, and removes WP-CLI packages.
@@ -82,6 +83,25 @@ class Package_Command extends WP_CLI_Command {
8283

8384
private $pool = false;
8485

86+
/**
87+
* Default author data used while creating default WP-CLI packages composer.json.
88+
*
89+
* @var array
90+
*/
91+
private $author_data = [
92+
'name' => 'WP-CLI',
93+
'email' => '[email protected]',
94+
];
95+
96+
/**
97+
* Default repository data used while creating default WP-CLI packages composer.json.
98+
* @var array
99+
*/
100+
private $composer_type_package = [
101+
'type' => 'composer',
102+
'url' => self::PACKAGE_INDEX_URL,
103+
];
104+
85105
/**
86106
* Browses WP-CLI packages available for installation.
87107
*
@@ -310,46 +330,47 @@ public function install( $args, $assoc_args ) {
310330
$json_manipulator->addLink( 'require', $package_name, $version, false /*sortPackages*/, true /*caseInsensitive*/ );
311331
$json_manipulator->addConfigSetting( 'secure-http', true );
312332

333+
$package_args = [];
313334
if ( $git_package ) {
314335
WP_CLI::log( sprintf( 'Registering %s as a VCS repository...', $git_package ) );
336+
$package_args = [
337+
'type' => 'vcs',
338+
'url' => $git_package,
339+
];
315340
$json_manipulator->addSubNode(
316341
'repositories',
317342
$package_name,
318-
[
319-
'type' => 'vcs',
320-
'url' => $git_package,
321-
],
343+
$package_args,
322344
true /*caseInsensitive*/
323345
);
324346
} elseif ( $dir_package ) {
325347
WP_CLI::log( sprintf( 'Registering %s as a path repository...', $dir_package ) );
348+
$package_args = [
349+
'type' => 'path',
350+
'url' => $dir_package,
351+
];
326352
$json_manipulator->addSubNode(
327353
'repositories',
328354
$package_name,
329-
[
330-
'type' => 'path',
331-
'url' => $dir_package,
332-
],
355+
$package_args,
333356
true /*caseInsensitive*/
334357
);
335358
}
336359
// If the composer file does not contain the current package index repository, refresh the repository definition.
337360
if ( empty( $composer_backup_decoded['repositories']['wp-cli']['url'] ) || self::PACKAGE_INDEX_URL !== $composer_backup_decoded['repositories']['wp-cli']['url'] ) {
338361
WP_CLI::log( 'Updating package index repository url...' );
362+
$package_args = $this->composer_type_package;
339363
$json_manipulator->addRepository(
340364
'wp-cli',
341-
[
342-
'type' => 'composer',
343-
'url' => self::PACKAGE_INDEX_URL,
344-
]
365+
$package_args
345366
);
346367
}
347368

348369
file_put_contents( $json_path, $json_manipulator->getContents() );
349370
$composer = $this->get_composer();
350371

351372
// Set up the EventSubscriber
352-
$event_subscriber = new \WP_CLI\PackageManagerEventSubscriber();
373+
$event_subscriber = new PackageManagerEventSubscriber();
353374
$composer->getEventDispatcher()->addSubscriber( $event_subscriber );
354375
// Set up the installer
355376
$install = Installer::create( new ComposerIO(), $composer );
@@ -482,7 +503,7 @@ public function update() {
482503
$composer = $this->get_composer();
483504

484505
// Set up the EventSubscriber
485-
$event_subscriber = new \WP_CLI\PackageManagerEventSubscriber();
506+
$event_subscriber = new PackageManagerEventSubscriber();
486507
$composer->getEventDispatcher()->addSubscriber( $event_subscriber );
487508

488509
// Set up the installer
@@ -598,8 +619,9 @@ private function get_composer() {
598619
// Best to just pretend we're installing a package from ~/.wp-cli or similar
599620
chdir( pathinfo( $composer_path, PATHINFO_DIRNAME ) );
600621

601-
// Prevent DateTime error/warning when no timezone set
602-
// phpcs:ignore WordPress.WP.TimezoneChange.timezone_change_date_default_timezone_set, WordPress.PHP.NoSilencedErrors.Discouraged -- The package is loaded before WordPress load, For environments that don't have set time in php.ini.
622+
// Prevent DateTime error/warning when no timezone set.
623+
// Note: The package is loaded before WordPress load, For environments that don't have set time in php.ini.
624+
// phpcs:ignore WordPress.WP.TimezoneChange.timezone_change_date_default_timezone_set,WordPress.PHP.NoSilencedErrors.Discouraged
603625
date_default_timezone_set( @date_default_timezone_get() );
604626

605627
$composer = Factory::create( new NullIO(), $composer_path );
@@ -641,15 +663,14 @@ private function package_index() {
641663
static $package_index;
642664

643665
if ( ! $package_index ) {
644-
$config = new Config();
645-
$config->merge(
646-
[
647-
'config' => [
648-
'secure-http' => true,
649-
'home' => dirname( $this->get_composer_json_path() ),
650-
],
651-
]
652-
);
666+
$config_args = [
667+
'config' => [
668+
'secure-http' => true,
669+
'home' => dirname( $this->get_composer_json_path() ),
670+
],
671+
];
672+
$config = new Config();
673+
$config->merge( $config_args );
653674
$config->setConfigSource( new JsonConfigSource( $this->get_composer_json() ) );
654675

655676
try {
@@ -728,8 +749,8 @@ private function show_packages( $context, $packages, $assoc_args ) {
728749

729750
$list = array_map(
730751
function( $package ) {
731-
$package['version'] = implode( ', ', $package['version'] );
732-
return $package;
752+
$package['version'] = implode( ', ', $package['version'] );
753+
return $package;
733754
},
734755
$list
735756
);
@@ -933,23 +954,15 @@ private function create_default_composer_json( $composer_path ) {
933954

934955
$json_file = new JsonFile( $composer_path );
935956

936-
$author = (object) [
937-
'name' => 'WP-CLI',
938-
'email' => '[email protected]',
939-
];
940-
941957
$repositories = (object) [
942-
'wp-cli' => (object) [
943-
'type' => 'composer',
944-
'url' => self::PACKAGE_INDEX_URL,
945-
],
958+
'wp-cli' => (object) $this->composer_type_package,
946959
];
947960

948961
$options = [
949962
'name' => 'wp-cli/wp-cli',
950963
'description' => 'Installed community packages used by WP-CLI',
951964
'version' => self::get_wp_cli_version_composer(),
952-
'authors' => [ $author ],
965+
'authors' => [ (object) $this->author_data ],
953966
'homepage' => self::PACKAGE_INDEX_URL,
954967
'require' => new stdClass(),
955968
'require-dev' => new stdClass(),
@@ -1139,14 +1152,14 @@ private function guess_version_constraint_from_tag( $tag ) {
11391152
private function set_composer_auth_env_var() {
11401153
$changed = false;
11411154
$composer_auth = getenv( 'COMPOSER_AUTH' );
1142-
if ( ! $composer_auth ) {
1155+
if ( false !== $composer_auth ) {
11431156
$composer_auth = json_decode( $composer_auth, true /*assoc*/ );
11441157
}
1145-
if ( ! $composer_auth || ! is_array( $composer_auth ) ) {
1158+
if ( empty( $composer_auth ) || ! is_array( $composer_auth ) ) {
11461159
$composer_auth = [];
11471160
}
11481161
$github_token = getenv( 'GITHUB_TOKEN' );
1149-
if ( ! isset( $composer_auth['github-oauth'] ) && $github_token ) {
1162+
if ( ! isset( $composer_auth['github-oauth'] ) && is_string( $github_token ) ) {
11501163
$composer_auth['github-oauth'] = [ 'github.com' => $github_token ];
11511164
$changed = true;
11521165
}
@@ -1211,26 +1224,23 @@ private function register_revert_shutdown_function( $json_path, $composer_backup
12111224

12121225
register_shutdown_function(
12131226
function () use (
1214-
$json_path,
1215-
$composer_backup,
1216-
&$revert,
1217-
$revert_msg,
1218-
$revert_fail_msg,
1219-
$memory_msg,
1220-
$memory_string,
1221-
$error_array
1227+
$json_path,
1228+
$composer_backup,
1229+
&$revert,
1230+
$revert_msg,
1231+
$revert_fail_msg,
1232+
$memory_msg,
1233+
$memory_string,
1234+
$error_array
12221235
) {
12231236
if ( $revert ) {
1224-
if ( false === file_put_contents(
1225-
$json_path,
1226-
$composer_backup
1227-
) ) {
1228-
fwrite( STDERR, $revert_fail_msg );
1237+
if ( false === file_put_contents( $json_path, $composer_backup ) ) {
1238+
fwrite( STDERR, $revert_fail_msg );
12291239
} else {
12301240
fwrite( STDERR, $revert_msg );
12311241
}
12321242
}
1233-
$error_array = error_get_last();
1243+
$error_array = error_get_last();
12341244
if ( false !== strpos( $error_array['message'], $memory_string ) ) {
12351245
fwrite( STDERR, $memory_msg );
12361246
}

tests/test-composer-json.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<?php
22

33
use WP_CLI\Utils;
4+
use WP_CLI\ExitException;
5+
use WP_CLI\Loggers\Execution;
46

57
require_once VENDOR_DIR . '/wp-cli/wp-cli/php/utils.php';
68
require_once VENDOR_DIR . '/wp-cli/wp-cli/php/class-wp-cli.php';
@@ -21,7 +23,7 @@ public function setUp() {
2123
$class_wp_cli_logger->setAccessible( true );
2224
$this->prev_logger = $class_wp_cli_logger->getValue();
2325

24-
$this->logger = new \WP_CLI\Loggers\Execution();
26+
$this->logger = new Execution();
2527
WP_CLI::set_logger( $this->logger );
2628

2729
// Enable exit exception.
@@ -58,7 +60,7 @@ public function test_create_default_composer_json() {
5860
$exception = null;
5961
try {
6062
$actual = $create_default_composer_json->invoke( $package, '' );
61-
} catch ( \WP_CLI\ExitException $ex ) {
63+
} catch ( ExitException $ex ) {
6264
$exception = $ex;
6365
}
6466
$this->assertTrue( null !== $exception );
@@ -142,7 +144,7 @@ public function test_get_composer_json_path_backup_decoded() {
142144
$exception = null;
143145
try {
144146
$actual = $get_composer_json_path_backup_decoded->invoke( $package );
145-
} catch ( \WP_CLI\ExitException $ex ) {
147+
} catch ( ExitException $ex ) {
146148
$exception = $ex;
147149
}
148150
$this->assertTrue( null !== $exception );

0 commit comments

Comments
 (0)