Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #377 #379

Merged
merged 3 commits into from Apr 9, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
21 changes: 12 additions & 9 deletions features/bootstrap/FeatureContext.php
Expand Up @@ -5,6 +5,8 @@
Behat\Behat\Context\BehatContext, Behat\Behat\Context\BehatContext,
Behat\Behat\Event\SuiteEvent; Behat\Behat\Event\SuiteEvent;


use \WP_CLI\Utils;

require_once 'PHPUnit/Framework/Assert/Functions.php'; require_once 'PHPUnit/Framework/Assert/Functions.php';


require_once __DIR__ . '/../../php/utils.php'; require_once __DIR__ . '/../../php/utils.php';
Expand Down Expand Up @@ -92,26 +94,27 @@ public function get_cache_path( $file ) {


if ( !$path ) { if ( !$path ) {
$path = sys_get_temp_dir() . '/wp-cli-test-cache'; $path = sys_get_temp_dir() . '/wp-cli-test-cache';
system( \WP_CLI\Utils\create_cmd( 'mkdir -p %s', $path ) ); system( Utils\create_cmd( 'mkdir -p %s', $path ) );
} }


return $path . '/' . $file; return $path . '/' . $file;
} }


public function download_file( $url, $path ) { public function download_file( $url, $path ) {
system( \WP_CLI\Utils\create_cmd( 'curl -sSL %s > %s', $url, $path ) ); system( Utils\create_cmd( 'curl -sSL %s > %s', $url, $path ) );
} }


private static function run_sql( $sql ) { private static function run_sql( $sql ) {
putenv( 'MYSQL_PWD=' . self::$db_settings['dbpass'] ); Utils\run_mysql_query( $sql, array(

'host' => 'localhost',
system( \WP_CLI\Utils\create_cmd( 'mysql -u%s -e %s', 'user' => self::$db_settings['dbuser'],
self::$db_settings['dbuser'], $sql ) ); 'pass' => self::$db_settings['dbpass'],
) );
} }


public function create_db() { public function create_db() {
$dbname = self::$db_settings['dbname']; $dbname = self::$db_settings['dbname'];
self::run_sql( "CREATE DATABASE $dbname" ); self::run_sql( "CREATE DATABASE IF NOT EXISTS $dbname" );
} }


public function drop_db() { public function drop_db() {
Expand All @@ -121,7 +124,7 @@ public function drop_db() {


private function _run( $command, $assoc_args, $subdir = '' ) { private function _run( $command, $assoc_args, $subdir = '' ) {
if ( !empty( $assoc_args ) ) if ( !empty( $assoc_args ) )
$command .= \WP_CLI\Utils\assoc_args_to_str( $assoc_args ); $command .= Utils\assoc_args_to_str( $assoc_args );


$subdir = $this->get_path( $subdir ); $subdir = $this->get_path( $subdir );


Expand Down Expand Up @@ -184,7 +187,7 @@ public function download_wordpress_files( $subdir = '' ) {


if ( $subdir ) mkdir( $dest_dir ); if ( $subdir ) mkdir( $dest_dir );


$cmd = \WP_CLI\Utils\create_cmd( "cp -r %s/* %s", $cache_dir, $dest_dir ); $cmd = Utils\create_cmd( "cp -r %s/* %s", $cache_dir, $dest_dir );


system( $cmd ); system( $cmd );
} }
Expand Down
33 changes: 16 additions & 17 deletions php/commands/db.php
@@ -1,5 +1,7 @@
<?php <?php


use \WP_CLI\Utils;

/** /**
* Perform basic database operations. * Perform basic database operations.
* *
Expand Down Expand Up @@ -47,8 +49,8 @@ function reset( $_, $assoc_args ) {
* Optimize the database. * Optimize the database.
*/ */
function optimize() { function optimize() {
self::run( \WP_CLI\Utils\create_cmd( self::run( 'mysqlcheck', Utils\create_cmd(
'mysqlcheck --optimize --host=%s --user=%s %s', '--optimize --host=%s --user=%s %s',
DB_HOST, DB_USER, DB_NAME DB_HOST, DB_USER, DB_NAME
) ); ) );


Expand All @@ -59,8 +61,8 @@ function optimize() {
* Repair the database. * Repair the database.
*/ */
function repair() { function repair() {
self::run( \WP_CLI\Utils\create_cmd( self::run( 'mysqlcheck', Utils\create_cmd(
'mysqlcheck --repair --host=%s --user=%s %s', '--repair --host=%s --user=%s %s',
DB_HOST, DB_USER, DB_NAME ) ); DB_HOST, DB_USER, DB_NAME ) );


WP_CLI::success( "Database repaired." ); WP_CLI::success( "Database repaired." );
Expand All @@ -72,8 +74,8 @@ function repair() {
* @alias cli * @alias cli
*/ */
function connect() { function connect() {
self::run( \WP_CLI\Utils\create_cmd( self::run( 'mysql', Utils\create_cmd(
'mysql --host=%s --user=%s --database=%s', '--host=%s --user=%s --database=%s',
DB_HOST, DB_USER, DB_NAME ) ); DB_HOST, DB_USER, DB_NAME ) );
} }


Expand All @@ -98,8 +100,8 @@ function query( $args ) {
function export( $args, $assoc_args ) { function export( $args, $assoc_args ) {
$result_file = $this->get_file_name( $args ); $result_file = $this->get_file_name( $args );


self::run( \WP_CLI\Utils\create_cmd( self::run( 'mysqldump', Utils\create_cmd(
'mysqldump %s --user=%s --host=%s --result-file %s', '%s --user=%s --host=%s --result-file %s',
DB_NAME, DB_USER, DB_HOST, $result_file ) ); DB_NAME, DB_USER, DB_HOST, $result_file ) );


WP_CLI::success( sprintf( 'Exported to %s', $result_file ) ); WP_CLI::success( sprintf( 'Exported to %s', $result_file ) );
Expand All @@ -113,8 +115,8 @@ function export( $args, $assoc_args ) {
function import( $args, $assoc_args ) { function import( $args, $assoc_args ) {
$result_file = $this->get_file_name( $args ); $result_file = $this->get_file_name( $args );


self::run( \WP_CLI\Utils\create_cmd( self::run( 'mysql', Utils\create_cmd(
'mysql %s --user=%s --host=%s < %s', '%s --user=%s --host=%s < %s',
DB_NAME, DB_USER, DB_HOST, $result_file ) ); DB_NAME, DB_USER, DB_HOST, $result_file ) );


WP_CLI::success( sprintf( 'Imported from %s', $result_file ) ); WP_CLI::success( sprintf( 'Imported from %s', $result_file ) );
Expand All @@ -128,20 +130,17 @@ private function get_file_name( $args ) {
} }


private static function run_query( $query ) { private static function run_query( $query ) {
return \WP_CLI\Utils\run_mysql_query( $query, array( Utils\run_mysql_query( $query, array(
'host' => DB_HOST, 'host' => DB_HOST,
'user' => DB_USER, 'user' => DB_USER,
'pass' => DB_PASSWORD, 'pass' => DB_PASSWORD,
) ); ) );
} }


private static function run( $cmd ) { private static function run( $cmd, $args ) {
$old_val = getenv( 'MYSQL_PWD' ); Utils\run_mysql_command( $cmd, $args, DB_PASSWORD );

putenv( 'MYSQL_PWD=' . DB_PASSWORD );
WP_CLI::launch( $cmd );
putenv( 'MYSQL_PWD=' . $old_val );
} }
} }


WP_CLI::add_command( 'db', 'DB_Command' ); WP_CLI::add_command( 'db', 'DB_Command' );

19 changes: 13 additions & 6 deletions php/utils.php
Expand Up @@ -362,17 +362,24 @@ function find_subcommand( $args ) {
return $command; return $command;
} }


function run_mysql_query( $query, $args, $dry_run = false ) { function run_mysql_query( $query, $args ) {
// TODO: use PDO? // TODO: use PDO?


$cmd = \WP_CLI\Utils\create_cmd( 'mysql --host=%s --user=%s --execute=%s', $arg_str = create_cmd( '--host=%s --user=%s --execute=%s',
$args['host'], $args['user'], $query $args['host'], $args['user'], $query );
);
run_mysql_command( 'mysql', $arg_str, $args['pass'] );
}


function run_mysql_command( $cmd, $arg_str, $pass ) {
$old_val = getenv( 'MYSQL_PWD' ); $old_val = getenv( 'MYSQL_PWD' );


putenv( 'MYSQL_PWD=' . $args['pass'] ); $final_cmd = "$cmd --defaults-file=/dev/null $arg_str";
\WP_CLI::launch( $cmd );
putenv( 'MYSQL_PWD=' . $pass );
$r = proc_close( proc_open( $final_cmd, array( STDIN, STDOUT, STDERR ), $pipes ) );
putenv( 'MYSQL_PWD=' . $old_val ); putenv( 'MYSQL_PWD=' . $old_val );

if ( $r ) exit( $r );
} }