#add jira & message sync

This commit is contained in:
2025-12-02 10:16:32 +08:00
parent 5c4492d8f8
commit 2ec44b5665
49 changed files with 6633 additions and 1209 deletions

View File

@@ -8,9 +8,10 @@ use Illuminate\Console\Command;
class EnvCommand extends Command
{
protected $signature = 'env:manage
{action : 操作类型 (list|environments|apply|save|import|delete)}
{action : 操作类型 (list|environments|apply|save|import|delete|backups|restore|delete-backup)}
{--project= : 项目名称}
{--environment= : 环境名称}
{--backup= : 备份名称}
{--content= : 环境文件内容}';
protected $description = '环境文件管理工具';
@@ -41,6 +42,12 @@ class EnvCommand extends Command
return $this->importEnvironment();
case 'delete':
return $this->deleteEnvironment();
case 'backups':
return $this->listBackups();
case 'restore':
return $this->restoreBackup();
case 'delete-backup':
return $this->deleteBackup();
default:
$this->error("未知操作: {$action}");
$this->showUsage();
@@ -234,18 +241,113 @@ class EnvCommand extends Command
return 0;
}
/**
* 列出项目备份
*/
private function listBackups(): int
{
$project = $this->option('project');
if (!$project) {
$this->error('请指定项目名称: --project=项目名');
return 1;
}
$backups = $this->envManager->getProjectBackups($project);
if (empty($backups)) {
$this->info("项目 {$project} 没有备份文件");
return 0;
}
$this->info("项目 {$project} 的备份文件:");
$this->table(
['备份名称', '文件大小', '创建时间'],
array_map(function ($backup) {
return [
$backup['name'],
$this->formatBytes($backup['size']),
$backup['created_at']
];
}, $backups)
);
return 0;
}
/**
* 恢复备份
*/
private function restoreBackup(): int
{
$project = $this->option('project');
$backup = $this->option('backup');
if (!$project || !$backup) {
$this->error('请指定项目名称和备份名称: --project=项目名 --backup=备份名');
return 1;
}
if ($this->confirm("确定要将备份 {$backup} 恢复到项目 {$project} 吗?")) {
$success = $this->envManager->restoreBackup($project, $backup);
if ($success) {
$this->info("成功将备份 {$backup} 恢复到项目 {$project}");
return 0;
} else {
$this->error("恢复备份失败");
return 1;
}
}
$this->info('操作已取消');
return 0;
}
/**
* 删除备份
*/
private function deleteBackup(): int
{
$project = $this->option('project');
$backup = $this->option('backup');
if (!$project || !$backup) {
$this->error('请指定项目名称和备份名称: --project=项目名 --backup=备份名');
return 1;
}
if ($this->confirm("确定要删除备份 {$project}/{$backup} 吗?")) {
$success = $this->envManager->deleteBackup($project, $backup);
if ($success) {
$this->info("成功删除备份 {$project}/{$backup}");
return 0;
} else {
$this->error("删除备份失败");
return 1;
}
}
$this->info('操作已取消');
return 0;
}
/**
* 显示使用说明
*/
private function showUsage(): void
{
$this->info('使用说明:');
$this->line(' php artisan env:manage list # 列出所有项目');
$this->line(' php artisan env:manage environments --project=项目名 # 列出项目环境');
$this->line(' php artisan env:manage apply --project=项目名 --environment=环境名 # 应用环境');
$this->line(' php artisan env:manage save --project=项目名 --environment=环境名 # 保存环境');
$this->line(' php artisan env:manage import --project=项目名 --environment=环境名 # 导入环境');
$this->line(' php artisan env:manage delete --project=项目名 --environment=环境名 # 删除环境');
$this->line(' php artisan env:manage list # 列出所有项目');
$this->line(' php artisan env:manage environments --project=项目名 # 列出项目环境');
$this->line(' php artisan env:manage apply --project=项目名 --environment=环境名 # 应用环境');
$this->line(' php artisan env:manage save --project=项目名 --environment=环境名 # 保存环境');
$this->line(' php artisan env:manage import --project=项目名 --environment=环境名 # 导入环境');
$this->line(' php artisan env:manage delete --project=项目名 --environment=环境名 # 删除环境');
$this->line(' php artisan env:manage backups --project=项目名 # 列出项目备份');
$this->line(' php artisan env:manage restore --project=项目名 --backup=备份名 # 恢复备份');
$this->line(' php artisan env:manage delete-backup --project=项目名 --backup=备份名 # 删除备份');
}
/**

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class JiraTestCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:jira-test-command';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*/
public function handle()
{
//
}
}