From 8716a9aefc51a100f2b07d2369d1ea1a38ddecdc Mon Sep 17 00:00:00 2001 From: Naveen Giri <1naveengiri@gmail.com> Date: Sun, 30 Apr 2017 00:01:13 +0530 Subject: [PATCH 1/4] Allow Multiple language uninstall --- src/WP_CLI/CommandWithTranslation.php | 66 ++++++++++++++------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/src/WP_CLI/CommandWithTranslation.php b/src/WP_CLI/CommandWithTranslation.php index 1aaa0c1e8..6a67d4727 100644 --- a/src/WP_CLI/CommandWithTranslation.php +++ b/src/WP_CLI/CommandWithTranslation.php @@ -399,7 +399,7 @@ protected function get_all_languages() { /** * Uninstall a given language. * - * + * ... * : Language code to uninstall. * * ## EXAMPLES @@ -412,45 +412,49 @@ protected function get_all_languages() { public function uninstall( $args, $assoc_args ) { global $wp_filesystem; - list( $language_code ) = $args; + $language_codes = $args; $available = $this->get_installed_languages(); - if ( ! in_array( $language_code, $available ) ) { - \WP_CLI::error( "Language not installed." ); - } + foreach ($language_codes as $language_code) { - $dir = 'core' === $this->obj_type ? '' : "/$this->obj_type"; - $files = scandir( WP_LANG_DIR . $dir ); - if ( ! $files ) { - \WP_CLI::error( "No files found in language directory." ); - } + if ( ! in_array( $language_code, $available ) ) { + \WP_CLI::error( "Language not installed." ); + } - $current_locale = get_locale(); - if ( $language_code === $current_locale ) { - \WP_CLI::warning( "The '{$language_code}' language is active." ); - exit; - } + $dir = 'core' === $this->obj_type ? '' : "/$this->obj_type"; + $files = scandir( WP_LANG_DIR . $dir ); + if ( ! $files ) { + \WP_CLI::error( "No files found in language directory." ); + } - // As of WP 4.0, no API for deleting a language pack - WP_Filesystem(); - $deleted = false; - foreach ( $files as $file ) { - if ( '.' === $file[0] || is_dir( $file ) ) { - continue; + $current_locale = get_locale(); + if ( $language_code === $current_locale ) { + \WP_CLI::warning( "The '{$language_code}' language is active." ); + exit; + } + + // As of WP 4.0, no API for deleting a language pack + WP_Filesystem(); + $deleted = false; + foreach ( $files as $file ) { + if ( '.' === $file[0] || is_dir( $file ) ) { + continue; + } + $extension_length = strlen( $language_code ) + 4; + $ending = substr( $file, -$extension_length ); + if ( ! in_array( $file, array( $language_code . '.po', $language_code . '.mo' ) ) && ! in_array( $ending, array( '-' . $language_code . '.po', '-' . $language_code . '.mo' ) ) ) { + continue; + } + $deleted = $wp_filesystem->delete( WP_LANG_DIR . $dir . '/' . $file ); } - $extension_length = strlen( $language_code ) + 4; - $ending = substr( $file, -$extension_length ); - if ( ! in_array( $file, array( $language_code . '.po', $language_code . '.mo' ) ) && ! in_array( $ending, array( '-' . $language_code . '.po', '-' . $language_code . '.mo' ) ) ) { - continue; + + if ( $deleted ) { + \WP_CLI::success( "Language uninstalled." ); + } else { + \WP_CLI::error( "Couldn't uninstall language." ); } - $deleted = $wp_filesystem->delete( WP_LANG_DIR . $dir . '/' . $file ); - } - if ( $deleted ) { - \WP_CLI::success( "Language uninstalled." ); - } else { - \WP_CLI::error( "Couldn't uninstall language." ); } } From bd01156b9a524a11c27633c4e93447d8370b595a Mon Sep 17 00:00:00 2001 From: Naveen Giri <1naveengiri@gmail.com> Date: Sun, 30 Apr 2017 00:45:28 +0530 Subject: [PATCH 2/4] Add Functional test --- features/core-language.feature | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/features/core-language.feature b/features/core-language.feature index dbdd01db4..01816f20f 100644 --- a/features/core-language.feature +++ b/features/core-language.feature @@ -145,6 +145,15 @@ Feature: Manage translation files for a WordPress install Success: Language uninstalled. """ + When I run `wp core language uninstall en_CA en_NZ` + Then the wp-content/languages/admin-en_CA.po file should not exist + And the wp-content/languages/en_CA.po file should not exist + And STDOUT should be: + """ + Success: Language uninstalled. + Success: Language uninstalled. + """ + When I try `wp core language uninstall en_GB` Then STDERR should be: """ From 5b5a2408416ed22248033204581c7f9d6d53b730 Mon Sep 17 00:00:00 2001 From: Naveen Giri <1naveengiri@gmail.com> Date: Sun, 30 Apr 2017 00:47:44 +0530 Subject: [PATCH 3/4] Correct functional test for Scenario of WP version --- features/core-language.feature | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/features/core-language.feature b/features/core-language.feature index 01816f20f..80b2f4cb5 100644 --- a/features/core-language.feature +++ b/features/core-language.feature @@ -197,5 +197,9 @@ Feature: Manage translation files for a WordPress install When I run `wp core language install nl_NL` Then STDOUT should contain: """ - Downloading translation from https://downloads.wordpress.org/translation/core/4.5.3 + Using cached file '/tmp/wp-cli-home/.wp-cli/cache/translation/core-default-4.5.3-nl_NL-1468579428.zip'... + Unpacking the update... + Installing the latest version... + Translation updated successfully. + Success: Language installed. """ From 7aac324f9b8f5c2c940bf26d3989b8f0d79c72b9 Mon Sep 17 00:00:00 2001 From: Naveen Giri <1naveengiri@gmail.com> Date: Sun, 30 Apr 2017 00:57:31 +0530 Subject: [PATCH 4/4] Revert correct functional test for Scenario of WP version --- features/core-language.feature | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/features/core-language.feature b/features/core-language.feature index 80b2f4cb5..01816f20f 100644 --- a/features/core-language.feature +++ b/features/core-language.feature @@ -197,9 +197,5 @@ Feature: Manage translation files for a WordPress install When I run `wp core language install nl_NL` Then STDOUT should contain: """ - Using cached file '/tmp/wp-cli-home/.wp-cli/cache/translation/core-default-4.5.3-nl_NL-1468579428.zip'... - Unpacking the update... - Installing the latest version... - Translation updated successfully. - Success: Language installed. + Downloading translation from https://downloads.wordpress.org/translation/core/4.5.3 """