no message

This commit is contained in:
kuaifan 2025-05-09 09:19:11 +08:00
parent 26727fea17
commit 14bc7a0f76
2 changed files with 40 additions and 2 deletions

View File

@ -197,7 +197,7 @@ class AppsController extends AbstractController
$logFile = base_path('docker/logs/apps/' . $appName . '.log'); $logFile = base_path('docker/logs/apps/' . $appName . '.log');
if (!file_exists($logFile)) { if (!file_exists($logFile)) {
return Base::retSuccess('日志返回成功', [ return Base::retSuccess('success', [
'log' => '' 'log' => ''
]); ]);
} }
@ -208,7 +208,7 @@ class AppsController extends AbstractController
exec($cmd, $output); exec($cmd, $output);
$logContent = implode("\n", $output); $logContent = implode("\n", $output);
return Base::retSuccess('日志返回成功', [ return Base::retSuccess('success', [
'log' => $logContent 'log' => $logContent
]); ]);
} }

View File

@ -94,6 +94,17 @@ class Apps
// 获取本地安装信息 // 获取本地安装信息
$localInfo = self::getAppLocalInfo($appName); $localInfo = self::getAppLocalInfo($appName);
// 检查是否需要卸载旧版本
if ($command === 'up' && $localInfo['status'] === 'installed' && $localInfo['require_uninstalls']) {
foreach ($localInfo['require_uninstalls'] as $requireUninstall) {
if (version_compare($versionInfo['version'], $requireUninstall['version'], $requireUninstall['operator'])) {
$op = $requireUninstall['operator'] ?: '=';
$reason = !empty($requireUninstall['reason']) ? "(原因:{$requireUninstall['reason']}" : '';
return Base::retError("更新版本 {$versionInfo['version']},需要先卸载已安装的版本{$reason}");
}
}
}
// 生成docker-compose.yml文件 // 生成docker-compose.yml文件
$res = self::generateDockerComposeYml($versionInfo['compose_file'], $localInfo['params']); $res = self::generateDockerComposeYml($versionInfo['compose_file'], $localInfo['params']);
if (Base::isError($res)) { if (Base::isError($res)) {
@ -241,6 +252,7 @@ class Apps
'github' => '', 'github' => '',
'document' => '', 'document' => '',
'fields' => [], 'fields' => [],
'require_uninstalls' => [],
]; ];
// 处理应用图标 // 处理应用图标
@ -322,6 +334,32 @@ class Apps
$info['fields'] = $fields; $info['fields'] = $fields;
} }
// 处理 require_uninstalls 配置
if (isset($configData['require_uninstalls']) && is_array($configData['require_uninstalls'])) {
$requireUninstalls = [];
foreach ($configData['require_uninstalls'] as $item) {
// 处理不同格式的配置
if (is_array($item)) {
// 完整格式: {version: '2.0.0', reason: '原因'}
if (isset($item['version']) && preg_match('/^\s*([<>=!]*)\s*(.+)$/', $item['version'], $matches)) {
$requireUninstalls[] = [
'version' => $matches[2],
'operator' => $matches[1] ?: '=',
'reason' => $item['reason'] ? self::getMultiLanguageField($item['reason']) : ''
];
}
} else {
// 简化格式: 直接是版本号字符串
$requireUninstalls[] = [
'version' => $item,
'operator' => '=',
'reason' => ''
];
}
}
$info['require_uninstalls'] = $requireUninstalls;
}
// 处理其他标准字段 // 处理其他标准字段
foreach (['author', 'website', 'github', 'document'] as $field) { foreach (['author', 'website', 'github', 'document'] as $field) {
if (isset($configData[$field])) { if (isset($configData[$field])) {