#!/usr/bin/env php addRequiredOption('action', (new CliOption('action', 'a'))); $this->addOption('key', (new CliOption('key', 'k'))); $this->addOption('value', (new CliOption('value', 'v'))); $this->addOption('language', (new CliOption('language', 'l'))); $this->addOption('originLanguage', (new CliOption('origin-language', 'o'))); $this->addOption('revert', (new CliOption('revert', 'r'))->withValueNone()); $this->addOption('help', (new CliOption('help', 'h'))->withValueNone()); parent::__construct(); } }; if (!empty($cliOptions->errors)) { fail('FreshRSS error: ' . array_shift($cliOptions->errors) . "\n" . $cliOptions->usage); } if (isset($cliOptions->help)) { manipulateHelp(); } $data = new I18nFile(); $i18nData = new I18nData($data->load()); switch ($cliOptions->action) { case 'add': if (isset($cliOptions->key) && isset($cliOptions->value) && isset($cliOptions->language)) { $i18nData->addValue($cliOptions->key, $cliOptions->value, $cliOptions->language); } elseif (isset($cliOptions->key) && isset($cliOptions->value)) { $i18nData->addKey($cliOptions->key, $cliOptions->value); } elseif (isset($cliOptions->language)) { $reference = null; if (isset($cliOptions->originLanguage)) { $reference = $cliOptions->originLanguage; } $i18nData->addLanguage($cliOptions->language, $reference); } else { error('You need to specify a valid set of options.'); exit; } break; case 'delete': if (isset($cliOptions->key)) { $i18nData->removeKey($cliOptions->key); } else { error('You need to specify the key to delete.'); exit; } break; case 'exist': if (isset($cliOptions->key)) { $key = $cliOptions->key; if ($i18nData->isKnown($key)) { echo "The '{$key}' key is known.\n\n"; } else { echo "The '{$key}' key is unknown.\n\n"; } } else { error('You need to specify the key to check.'); exit; } break; case 'format': break; case 'ignore': if (isset($cliOptions->language) && isset($cliOptions->key)) { $i18nData->ignore($cliOptions->key, $cliOptions->language, isset($cliOptions->revert)); } else { error('You need to specify a valid set of options.'); exit; } break; case 'ignore_unmodified': if (isset($cliOptions->language)) { $i18nData->ignore_unmodified($cliOptions->language, isset($cliOptions->revert)); } else { error('You need to specify a valid set of options.'); exit; } break; default: manipulateHelp(); exit; } $data->dump($i18nData->getData()); /** * Output error message. */ function error(string $message): void { $error = <<