102 lines
2.5 KiB
PHP
102 lines
2.5 KiB
PHP
![]() |
<?php
|
|||
|
|
|||
|
if (!class_exists('WP_CLI')) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
class OSS_CLI_Commands
|
|||
|
{
|
|||
|
|
|||
|
/**
|
|||
|
* 同步文件夹到 OSS
|
|||
|
*
|
|||
|
* ## OPTIONS
|
|||
|
*
|
|||
|
* <path>
|
|||
|
* : 要同步的文件夹
|
|||
|
*
|
|||
|
* ## EXAMPLES
|
|||
|
*
|
|||
|
* wp oss upload wp-content/uploads
|
|||
|
*
|
|||
|
* @when after_wp_load
|
|||
|
*/
|
|||
|
public function upload($args, $assoc_args)
|
|||
|
{
|
|||
|
[$path] = $args;
|
|||
|
$dir = ABSPATH . $path;
|
|||
|
if (!is_dir($dir)) {
|
|||
|
WP_CLI::error("Directory not found: [{$dir}]");
|
|||
|
}
|
|||
|
|
|||
|
WP_CLI::line("Uploading files from [{$dir}] to OSS...");
|
|||
|
|
|||
|
$files = oss_read_dir_queue(ABSPATH, $path);
|
|||
|
if (empty($files)) {
|
|||
|
WP_CLI::success('No files to upload.');
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
foreach ($files as $file) {
|
|||
|
$status = oss_file_upload($file['key'], $file['filepath']);
|
|||
|
if ($status) {
|
|||
|
WP_CLI::line("Uploaded: {$file['key']}");
|
|||
|
} else {
|
|||
|
WP_CLI::line("Failed: {$file['key']}");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$total = count($files);
|
|||
|
WP_CLI::success("Uploaded {$total} files.");
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 同步文件到 OSS
|
|||
|
*
|
|||
|
* ## OPTIONS
|
|||
|
*
|
|||
|
* <path>
|
|||
|
* : 要同步的文件
|
|||
|
*
|
|||
|
* [--delete]
|
|||
|
* : 如果设置,上传后会删除本地文件
|
|||
|
* [--key=<key>]
|
|||
|
* : 指定上传到 OSS 的 key,默认和文件路径一致
|
|||
|
*
|
|||
|
* ## EXAMPLES
|
|||
|
*
|
|||
|
* wp oss upload-file wp-content/uploads/2021/01/1.jpg
|
|||
|
* wp oss upload-file wp-content/uploads/2021/01/1.jpg --delete
|
|||
|
* wp oss upload-file wp-content/uploads/2021/01/1.jpg --key=2021/01/1.jpg
|
|||
|
*
|
|||
|
* @when after_wp_load
|
|||
|
* @subcommand upload-file
|
|||
|
*/
|
|||
|
public function upload_file($args, $assoc_args)
|
|||
|
{
|
|||
|
[$path] = $args;
|
|||
|
$file = ABSPATH . $path;
|
|||
|
if (!is_file($file)) {
|
|||
|
WP_CLI::error("File not found: {$file}");
|
|||
|
}
|
|||
|
|
|||
|
$delete = false;
|
|||
|
if (isset($assoc_args['delete'])) {
|
|||
|
$delete = true;
|
|||
|
}
|
|||
|
|
|||
|
$key = isset($assoc_args['key']) ? $assoc_args['key'] : $path;
|
|||
|
|
|||
|
WP_CLI::line("Uploading file [{$file}] to OSS with key [$key]...");
|
|||
|
|
|||
|
$status = oss_file_upload("/{$key}", $file, $delete);
|
|||
|
if ($status) {
|
|||
|
WP_CLI::success("Uploaded: {$path}");
|
|||
|
} else {
|
|||
|
WP_CLI::error("Failed: {$path}");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
WP_CLI::add_command('oss', 'OSS_CLI_Commands', ['shortdesc' => 'Commands used to operate OSS.']);
|