diff options
| author | 2025-12-21 19:26:08 +0100 | |
|---|---|---|
| committer | 2025-12-21 19:26:08 +0100 | |
| commit | 1a3912f25a27c8d78aacbbee98f6056f4ad47f1a (patch) | |
| tree | 90fe6bd955535aed22152fc3a41a51a4958f4d4d /cli/_cli.php | |
| parent | 672411ca7053345634a63dd3eabed75baf93043f (diff) | |
Improve configuration checks (#8334)
Add a distinction between recommended and required extensions.
Add check for recommended php-intl extension as follow-up of https://github.com/FreshRSS/FreshRSS/pull/8329#issuecomment-3677686581
Improve related checks such as ZIP.
Reduce duplicated translations and tests.
Diffstat (limited to 'cli/_cli.php')
| -rw-r--r-- | cli/_cli.php | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/cli/_cli.php b/cli/_cli.php index e3b0c2304..3ae7611c0 100644 --- a/cli/_cli.php +++ b/cli/_cli.php @@ -58,18 +58,42 @@ function done(bool $ok = true): never { exit($ok ? 0 : 1); } +function requirementStatus(string $key, string $status): string { + if ($key === 'php') { + return _t('install.check.' . $key . '.' . ($status === 'ok' ? 'ok' : 'nok'), PHP_VERSION, FRESHRSS_MIN_PHP_VERSION); + } + return _t('install.check.' . $key . '.' . ($status === 'ok' ? 'ok' : 'nok')); +} + function performRequirementCheck(string $databaseType): void { + if (!in_array($databaseType, ['mysql', 'pgsql', 'sqlite'], true)) { + fail('Invalid database type!'); + } $requirements = checkRequirements($databaseType); - if ($requirements['all'] !== 'ok') { - $message = 'FreshRSS failed requirements:' . "\n"; + $message = ''; + + if (in_array('warn', array_values($requirements), true)) { + $message .= 'FreshRSS failed recommendations:' . "\n"; foreach ($requirements as $requirement => $check) { - if ($check !== 'ok' && !in_array($requirement, ['all', 'pdo', 'message'], true)) { - $message .= '• ' . $requirement . "\n"; + if ($check === 'warn') { + $message .= '⚠ ' . $requirement . ': ' . requirementStatus($requirement, $check) . "\n"; } } - if (!empty($requirements['message']) && $requirements['message'] !== 'ok') { - $message .= '• ' . $requirements['message'] . "\n"; + $message .= "\n"; + } + + if ($requirements['all'] !== 'ok') { + $message .= 'FreshRSS failed requirements:' . "\n"; + foreach ($requirements as $requirement => $check) { + if ($check === 'ko' && !in_array($requirement, ['all'], true)) { + $message .= '❌ ' . $requirement . ': ' . requirementStatus($requirement, $check) . "\n"; + } } fail($message); } + + $message = trim($message); + if ($message !== '') { + fwrite(STDERR, $message . "\n"); + } } |
