Skip to content

Commit

Permalink
Merge pull request #205 from wp-cli/fix/185-refactor-defaults-flag-ha…
Browse files Browse the repository at this point in the history
…ndling

Refactor `--defaults` flag handling
  • Loading branch information
schlessera authored Jul 26, 2021
2 parents 9b08c7d + 7b245e4 commit 6034921
Showing 1 changed file with 31 additions and 17 deletions.
48 changes: 31 additions & 17 deletions src/DB_Command.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class DB_Command extends WP_CLI_Command {
*/
public function create( $_, $assoc_args ) {

$this->run_query( self::get_create_query(), self::get_dbuser_dbpass_args( $assoc_args ) );
$this->run_query( self::get_create_query(), $assoc_args );

WP_CLI::success( 'Database created.' );
}
Expand Down Expand Up @@ -111,7 +111,7 @@ public function create( $_, $assoc_args ) {
public function drop( $_, $assoc_args ) {
WP_CLI::confirm( "Are you sure you want to drop the '" . DB_NAME . "' database?", $assoc_args );

$this->run_query( sprintf( 'DROP DATABASE `%s`', DB_NAME ), self::get_dbuser_dbpass_args( $assoc_args ) );
$this->run_query( sprintf( 'DROP DATABASE `%s`', DB_NAME ), $assoc_args );

WP_CLI::success( 'Database dropped.' );
}
Expand Down Expand Up @@ -142,10 +142,8 @@ public function drop( $_, $assoc_args ) {
public function reset( $_, $assoc_args ) {
WP_CLI::confirm( "Are you sure you want to reset the '" . DB_NAME . "' database?", $assoc_args );

$mysql_args = self::get_dbuser_dbpass_args( $assoc_args );

$this->run_query( sprintf( 'DROP DATABASE IF EXISTS `%s`', DB_NAME ), $mysql_args );
$this->run_query( self::get_create_query(), $mysql_args );
$this->run_query( sprintf( 'DROP DATABASE IF EXISTS `%s`', DB_NAME ), $assoc_args );
$this->run_query( self::get_create_query(), $assoc_args );

WP_CLI::success( 'Database reset.' );
}
Expand Down Expand Up @@ -187,8 +185,6 @@ public function clean( $_, $assoc_args ) {
$assoc_args
);

$mysql_args = self::get_dbuser_dbpass_args( $assoc_args );

$tables = Utils\wp_get_table_names(
[],
[ 'all-tables-with-prefix' => true ]
Expand All @@ -201,7 +197,7 @@ public function clean( $_, $assoc_args ) {
DB_NAME,
$table
),
$mysql_args
$assoc_args
);
}

Expand Down Expand Up @@ -718,10 +714,12 @@ public function import( $args, $assoc_args ) {
$result_file = sprintf( '%s.sql', DB_NAME );
}

$mysql_args = [
'database' => DB_NAME,
];
$mysql_args = array_merge( self::get_dbuser_dbpass_args( $assoc_args ), $mysql_args );
// Process options to MySQL.
$mysql_args = array_merge(
[ 'database' => DB_NAME ],
self::get_dbuser_dbpass_args( $assoc_args ),
self::get_mysql_args( $assoc_args )
);

if ( '-' !== $result_file ) {
if ( ! is_readable( $result_file ) ) {
Expand All @@ -738,8 +736,6 @@ public function import( $args, $assoc_args ) {
} else {
$result_file = 'STDIN';
}
// Check if any mysql option pass.
$mysql_args = array_merge( $mysql_args, self::get_mysql_args( $assoc_args ) );

$command = sprintf( '/usr/bin/env mysql%s --no-auto-rehash', $this->get_defaults_flag_string( $assoc_args ) );
WP_CLI::debug( "Running shell command: {$command}", 'db' );
Expand Down Expand Up @@ -1548,12 +1544,17 @@ protected function run_query( $query, $assoc_args = [] ) {

WP_CLI::debug( "Query: {$query}", 'db' );

$mysql_args = array_merge(
self::get_dbuser_dbpass_args( $assoc_args ),
self::get_mysql_args( $assoc_args )
);

self::run(
sprintf(
'/usr/bin/env mysql%s --no-auto-rehash',
$this->get_defaults_flag_string( $assoc_args )
),
array_merge( $assoc_args, [ 'execute' => $query ] )
array_merge( [ 'execute' => $query ], $mysql_args )
);
}

Expand Down Expand Up @@ -1599,7 +1600,20 @@ private static function run( $cmd, $assoc_args = [], $send_to_shell = true, $int
unset( $assoc_args['dbpass'], $assoc_args['password'] );
}

$final_args = array_merge( $assoc_args, $required );
$final_args = array_merge( $required, $assoc_args );

// Adapt ordering of arguments.
uksort(
$final_args,
static function ( $a, $b ) {
switch ( $b ) {
case 'force':
return -1;
default:
return 1;
}
}
);

return Utils\run_mysql_command( $cmd, $final_args, null, $send_to_shell, $interactive );
}
Expand Down

0 comments on commit 6034921

Please sign in to comment.