diff options
| author | 2023-04-05 16:19:14 +0200 | |
|---|---|---|
| committer | 2023-04-05 16:19:14 +0200 | |
| commit | 3f1695db039101d44d611f0d1781d1ba034034dd (patch) | |
| tree | b64a462eaff96e8b3528b1dc17f400b12692da73 /cli | |
| parent | 36aa0122e15b6c5a4bf923467b63a577cac5a539 (diff) | |
PHPStan 6 for CLI (#5258)
* PHPStan 6 for CLI
Except `./cli/i18n/`
* Bool
* One type forgotten
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/_cli.php | 24 | ||||
| -rw-r--r-- | cli/_update-or-create-user.php | 4 | ||||
| -rwxr-xr-x | cli/check.translation.php | 9 | ||||
| -rwxr-xr-x | cli/manipulate.translation.php | 10 | ||||
| -rwxr-xr-x | cli/prepare.php | 2 |
5 files changed, 30 insertions, 19 deletions
diff --git a/cli/_cli.php b/cli/_cli.php index 13f4c62a2..8a6b13007 100644 --- a/cli/_cli.php +++ b/cli/_cli.php @@ -18,12 +18,13 @@ Minz_Translate::init('en'); FreshRSS_Context::$isCli = true; -function fail($message, $exitCode = 1) { +/** @return never */ +function fail(string $message, int $exitCode = 1) { fwrite(STDERR, $message . "\n"); die($exitCode); } -function cliInitUser($username) { +function cliInitUser(string $username): string { if (!FreshRSS_user_Controller::checkUsername($username)) { fail('FreshRSS error: invalid username: ' . $username . "\n"); } @@ -42,19 +43,20 @@ function cliInitUser($username) { return $username; } -function accessRights() { +function accessRights(): void { echo 'ℹ️ Remember to re-apply the appropriate access rights, such as:', "\t", 'sudo cli/access-permissions.sh', "\n"; } -function done($ok = true) { +/** @return never */ +function done(bool $ok = true) { if (!$ok) { fwrite(STDERR, (empty($_SERVER['argv'][0]) ? 'Process' : basename($_SERVER['argv'][0])) . ' failed!' . "\n"); } exit($ok ? 0 : 1); } -function performRequirementCheck($databaseType) { +function performRequirementCheck(string $databaseType): void { $requirements = checkRequirements($databaseType); if ($requirements['all'] !== 'ok') { $message = 'FreshRSS failed requirements:' . "\n"; @@ -70,7 +72,11 @@ function performRequirementCheck($databaseType) { } } -function getLongOptions($options, $regex) { +/** + * @param array<string> $options + * @return array<string> + */ +function getLongOptions(array $options, string $regex): array { $longOptions = array_filter($options, function($a) use ($regex) { return preg_match($regex, $a); }); @@ -79,7 +85,11 @@ function getLongOptions($options, $regex) { }, $longOptions); } -function validateOptions($input, $params) { +/** + * @param array<string> $input + * @param array<string> $params + */ +function validateOptions(array $input, array $params): bool { $sanitizeInput = getLongOptions($input, REGEX_INPUT_OPTIONS); $sanitizeParams = getLongOptions($params, REGEX_PARAM_OPTIONS); $unknownOptions = array_diff($sanitizeInput, $sanitizeParams); diff --git a/cli/_update-or-create-user.php b/cli/_update-or-create-user.php index e51c68e10..0f6c39517 100644 --- a/cli/_update-or-create-user.php +++ b/cli/_update-or-create-user.php @@ -34,12 +34,12 @@ if (!validateOptions($argv, $params) || empty($options['user'])) { " --since_hours_posts_per_rss 168 --max_posts_per_rss 400 )"); } -function strParam($name) { +function strParam(string $name): ?string { global $options; return isset($options[$name]) ? strval($options[$name]) : null; } -function intParam($name) { +function intParam(string $name): ?int { global $options; return isset($options[$name]) && ctype_digit($options[$name]) ? intval($options[$name]) : null; } diff --git a/cli/check.translation.php b/cli/check.translation.php index ae0abd78e..59f59f94b 100755 --- a/cli/check.translation.php +++ b/cli/check.translation.php @@ -12,7 +12,7 @@ $i18nData = new I18nData($i18nFile->load()); $options = getopt("dhl:r"); if (array_key_exists('h', $options)) { - help(); + checkHelp(); } if (array_key_exists('l', $options)) { $languages = array($options['l']); @@ -63,9 +63,9 @@ if (!$isValidated) { * Iterates through all php and phtml files in the whole project and extracts all * translation keys used. * - * @return array + * @return array<string> */ -function findUsedTranslations() { +function findUsedTranslations(): array { $directory = new RecursiveDirectoryIterator(__DIR__ . '/..'); $iterator = new RecursiveIteratorIterator($directory); $regex = new RegexIterator($iterator, '/^.+\.(php|phtml)$/i', RecursiveRegexIterator::GET_MATCH); @@ -80,8 +80,9 @@ function findUsedTranslations() { /** * Output help message. + * @return never */ -function help() { +function checkHelp() { $file = str_replace(__DIR__ . '/', '', __FILE__); echo <<<HELP diff --git a/cli/manipulate.translation.php b/cli/manipulate.translation.php index 801aa30b6..ed307f302 100755 --- a/cli/manipulate.translation.php +++ b/cli/manipulate.translation.php @@ -9,7 +9,7 @@ require_once __DIR__ . '/../constants.php'; $options = getopt("a:hk:l:o:rv:"); if (array_key_exists('h', $options)) { - help(); + manipulateHelp(); } if (!array_key_exists('a', $options)) { @@ -76,7 +76,7 @@ switch ($options['a']) { } break; default : - help(); + manipulateHelp(); exit; } @@ -85,19 +85,19 @@ $data->dump($i18nData->getData()); /** * Output error message. */ -function error($message) { +function error(string $message): void { $error = <<<ERROR WARNING %s\n\n ERROR; echo sprintf($error, $message); - help(); + manipulateHelp(); } /** * Output help message. */ -function help() { +function manipulateHelp(): void { $file = str_replace(__DIR__ . '/', '', __FILE__); echo <<<HELP NAME diff --git a/cli/prepare.php b/cli/prepare.php index 1128def91..e04cf7e19 100755 --- a/cli/prepare.php +++ b/cli/prepare.php @@ -39,4 +39,4 @@ file_put_contents(DATA_PATH . '/.htaccess', accessRights(); -done($ok); +done((bool)$ok); |
