Files
toolbox/app/Console/Commands/GitMonitorCheckCommand.php

69 lines
2.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Console\Commands;
use App\Services\GitMonitorService;
use Illuminate\Console\Command;
class GitMonitorCheckCommand extends Command
{
protected $signature = 'git-monitor:check
{--force-cache : 强制从 JIRA 刷新 release 缓存后再检查}';
protected $description = '巡检 release 分支是否包含 develop merge 或因为冲突导致的函数缺失';
public function handle(GitMonitorService $monitor): void
{
if ($this->option('force-cache')) {
$monitor->refreshReleaseCache(true);
} else {
$monitor->ensureReleaseCache();
}
$results = $monitor->checkRepositories(false);
foreach ($results as $repo => $result) {
if (isset($result['error'])) {
$this->error(sprintf('[%s] %s', $repo, $result['error']));
continue;
}
$this->line(sprintf(
'[%s] 分支 %s 已对齐 %s扫描 %d 个提交。',
$repo,
$result['branch'],
$result['head'],
$result['commits_scanned']
));
if (!empty($result['issues']['develop_merges'])) {
$this->warn(sprintf(' - 检测到 %d 个 develop merge:', count($result['issues']['develop_merges'])));
foreach ($result['issues']['develop_merges'] as $commit) {
$this->warn(sprintf(
' • %s %s (%s)',
substr($commit['hash'], 0, 8),
$commit['subject'],
$commit['author']
));
}
}
if (!empty($result['issues']['missing_functions'])) {
$this->warn(sprintf(' - 检测到 %d 个疑似缺失函数的提交:', count($result['issues']['missing_functions'])));
foreach ($result['issues']['missing_functions'] as $issue) {
$this->warn(sprintf(
' • %s %s (%s)',
substr($issue['commit']['hash'], 0, 8),
$issue['commit']['subject'],
$issue['commit']['author']
));
foreach ($issue['details'] as $detail) {
$functions = implode(', ', array_slice($detail['functions'], 0, 5));
$this->warn(sprintf(' %s => %s', $detail['file'], $functions));
}
}
}
}
}
}