From 5c2032d7b4e5f2340923c78484590458badecde8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 15 Nov 2024 02:03:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E6=8F=92=E4=BB=B6/=E4=B8=BB=E9=A2=98=E7=9A=84=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +++-- .../Command/Worker.php | 29 +++++++++++++++++ .../Command/Worker.php | 31 ++++++++++++++++++- .../Service/Project.php | 21 ++++++++++--- 4 files changed, 82 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index cb9b2f86..55dc3a37 100644 --- a/README.md +++ b/README.md @@ -110,8 +110,12 @@ WHERE status = 'failed'; ### 下面是一些可能会使用到的 CLI 命令。 ```bash -wp --allow-root --url=wenpai.org/plugins platform wporg_plugins_update force_run -wp --allow-root --url=wenpai.org/themes platform wporg_themes_update force_run +wp --allow-root --url=wenpai.org/plugins platform wporg_plugins_update run +wp --allow-root --url=wenpai.org/themes platform wporg_themes_update run +wp --allow-root --url=wenpai.org/plugins platform wporg_plugins_update run_force +wp --allow-root --url=wenpai.org/themes platform wporg_themes_update run_force +wp --allow-root --url=wenpai.org/plugins platform wporg_plugins_update run_single --slug=woocommerce +wp --allow-root --url=wenpai.org/themes platform wporg_themes_update run_single --slug=twentytwentyfive wp --allow-root --url=translate.wenpai.org platform translate_import import --type=plugins --slug=woocommerce wp --allow-root --url=translate.wenpai.org platform translate_import_release release --version=dev --display_version=dev --old_version=dev diff --git a/wp-content/plugins/plat-wporg-plugins-spider/Command/Worker.php b/wp-content/plugins/plat-wporg-plugins-spider/Command/Worker.php index c2f4432c..96bc3d6f 100644 --- a/wp-content/plugins/plat-wporg-plugins-spider/Command/Worker.php +++ b/wp-content/plugins/plat-wporg-plugins-spider/Command/Worker.php @@ -199,6 +199,35 @@ class Worker extends WP_CLI_Command { } } + public function run_single( $args, $assoc_args ) { + if ( empty( $assoc_args['slug'] ) ) { + WP_CLI::line( '你需要给出要导入的项目 Slug' ); + exit; + } + + $slugs = [ $assoc_args['slug'] ]; + $infos = $this->fetch_remote_plugins( $slugs ); + + foreach ( $infos as $info ) { + if ( $info === false ) { + WP_CLI::line( '已下架:' . $assoc_args['slug'] ); + continue; + } + if ( empty( $info ) ) { + WP_CLI::line( '空数据:' . $assoc_args['slug'] ); + continue; + } + + try { + $this->update_post( $assoc_args['slug'], $info ); + } catch ( Exception $e ) { + WP_CLI::line( '出错:' . $e->getMessage() ); + } + } + + WP_CLI::line( '搞定!' ); + } + /** * 更新文章 * diff --git a/wp-content/plugins/plat-wporg-themes-spider/Command/Worker.php b/wp-content/plugins/plat-wporg-themes-spider/Command/Worker.php index 3201df89..8e82ca14 100644 --- a/wp-content/plugins/plat-wporg-themes-spider/Command/Worker.php +++ b/wp-content/plugins/plat-wporg-themes-spider/Command/Worker.php @@ -28,7 +28,7 @@ class Worker extends WP_CLI_Command { * 全量更新 * @return void */ - public function force_run(): void { + public function run_force(): void { while ( ob_get_level() ) { ob_end_flush(); } @@ -199,6 +199,35 @@ class Worker extends WP_CLI_Command { } } + public function run_single( $args, $assoc_args ) { + if ( empty( $assoc_args['slug'] ) ) { + WP_CLI::line( '你需要给出要导入的项目 Slug' ); + exit; + } + + $slugs = [ $assoc_args['slug'] ]; + $infos = $this->fetch_remote_themes( $slugs ); + + foreach ( $infos as $info ) { + if ( $info === false ) { + WP_CLI::line( '已下架:' . $assoc_args['slug'] ); + continue; + } + if ( empty( $info ) ) { + WP_CLI::line( '空数据:' . $assoc_args['slug'] ); + continue; + } + + try { + $this->update_post( $assoc_args['slug'], $info ); + } catch ( Exception $e ) { + WP_CLI::line( '出错:' . $e->getMessage() ); + } + } + + WP_CLI::line( '搞定!' ); + } + /** * 更新文章 * diff --git a/wp-content/plugins/plat-wporg-translate-import/Service/Project.php b/wp-content/plugins/plat-wporg-translate-import/Service/Project.php index c3da909a..13e0a8dd 100644 --- a/wp-content/plugins/plat-wporg-translate-import/Service/Project.php +++ b/wp-content/plugins/plat-wporg-translate-import/Service/Project.php @@ -8,6 +8,7 @@ use Platform\Chinese_Format\Chinese_Format; use Platform\Logger\Logger; use Translation_Entry; use WordPressdotorg\GlotPress\TranslationSuggestions\Translation_Memory_Client; +use WP_CLI; use WP_Error; use WPorg_GP_Project_Stats; use function Platform\Translate\WPOrgTranslateImport\create_project; @@ -42,9 +43,17 @@ class Project { set_time_limit( 3600 ); ignore_user_abort( true ); } + + $route = new GP_Route; $wporg_url = sprintf( 'https://translate.wordpress.org/locale/zh-cn/default/wp-%s/%s/', $type, $slug ); $data = get_web_page_contents( $wporg_url ); - if ( is_wp_error( $data ) || false === $data ) { + if ( is_wp_error( $data ) ) { + if ( 'cli' !== PHP_SAPI ) { + $route->redirect_with_error( $data->get_error_message() ); + } else { + WP_CLI::line( $data->get_error_message() ); + } + return false; } @@ -54,8 +63,6 @@ class Project { $sub_projects = self::get_theme_sub_project( $slug ); } - $route = new GP_Route; - if ( is_wp_error( $sub_projects ) ) { Logger::error( Logger::TRANSLATE, '获取子项目详情失败', array( 'slug' => $slug, @@ -64,7 +71,9 @@ class Project { ) ); if ( 'cli' !== PHP_SAPI ) { - $route->redirect_with_error( '获取子项目详情失败' ); + $route->redirect_with_error( '获取子项目详情失败:' . $sub_projects->get_error_message() ); + } else { + WP_CLI::line( '获取子项目详情失败:' . $sub_projects->get_error_message() ); } return false; @@ -107,6 +116,10 @@ class Project { 'error' => $data->get_error_message(), ) ); + if ( 'cli' == PHP_SAPI ) { + WP_CLI::line( '请求翻译文件失败:' . $data->get_error_message() ); + } + continue; }