diff options
| author | 2018-03-10 16:23:00 +0100 | |
|---|---|---|
| committer | 2018-03-10 16:23:00 +0100 | |
| commit | 948b44ee1e90773ba11d00cb2d348224ee11bc97 (patch) | |
| tree | 3b7da0b6a7cab4ebdc0e7c7673eea9711055d063 | |
| parent | 23342aec30d43f078a1581f7d1d99616eb96c0e3 (diff) | |
Change code to be more robust
The code doesn't rely on positionnal arguments anymore. It uses options.
I've added some check to validate that the action performed are configured
properly.
| -rw-r--r-- | cli/manipulate.translation.php | 102 |
1 files changed, 60 insertions, 42 deletions
diff --git a/cli/manipulate.translation.php b/cli/manipulate.translation.php index 0e06993ef..19b229878 100644 --- a/cli/manipulate.translation.php +++ b/cli/manipulate.translation.php @@ -1,13 +1,13 @@ <?php -$options = getopt("h"); +$options = getopt("a:hk:l:v:"); if (array_key_exists('h', $options)) { help(); } -if (1 === $argc || 5 < $argc) { - help(); +if (!array_key_exists('a', $options)) { + error('You need to specify the action to perform.'); } require_once __DIR__ . '/i18n/I18nFile.php'; @@ -15,27 +15,31 @@ require_once __DIR__ . '/i18n/I18nFile.php'; $i18nFile = new I18nFile(); $i18nData = $i18nFile->load(); -switch ($argv[1]) { - case 'add_language' : - $i18nData->addLanguage($argv[2]); - break; - case 'add_key' : - if (3 === $argc) { - help(); +switch ($options['a']) { + case 'add' : + if (array_key_exists('k', $options) && array_key_exists('v', $options) && array_key_exists('l', $options)) { + $i18nData->addValue($options['k'], $options['v'], $options['l']); + } elseif (array_key_exists('k', $options) && array_key_exists('v', $options)) { + $i18nData->addKey($options['k'], $options['v']); + } elseif (array_key_exists('l', $options)) { + $i18nData->addLanguage($options['l']); + } else { + error('You need to specify a valid set of options.'); } - $i18nData->addKey($argv[2], $argv[3]); break; - case 'add_value': - if (4 === $argc) { - help(); + case 'delete' : + if (array_key_exists('k', $options)) { + $i18nData->removeKey($options['k']); + } else { + error('You need to specify the key to delete.'); } - $i18nData->addValue($argv[2], $argv[3], $argv[4]); - break; - case 'duplicate_key' : - $i18nData->duplicateKey($argv[2]); break; - case 'delete_key' : - $i18nData->removeKey($argv[2]); + case 'duplicate' : + if (array_key_exists('k', $options)) { + $i18nData->duplicateKey($options['k']); + } else { + error('You need to specify the key to duplicate'); + } break; case 'format' : $i18nFile->dump($i18nData); @@ -49,46 +53,60 @@ if ($i18nData->hasChanged()) { } /** + * Output error message. + */ +function error($message) { + $error = <<<ERROR +WARNING + %s\n\n +ERROR; + echo sprintf($error, $message); + help(); +} + +/** * Output help message. */ function help() { $help = <<<HELP NAME - %s + %1\$s SYNOPSIS - php %s [OPTION] [OPERATION] [KEY] [VALUE] [LANGUAGE] + php %1\$s [OPTIONS] DESCRIPTION - Manipulate translation files. Available operations are - Check if translation files have missing keys or missing translations. - + Manipulate translation files. + + -a=ACTION + select the action to perform. Available actions are add, delete, + duplicate, and format. This option is mandatory. + -k=KEY select the key to work on. + -v=VAL select the value to set. + -l=LANG select the language to work on. -h display this help and exit. -OPERATION - add_language - add a new language by duplicating the referential. This operation - needs only a KEY. +EXEMPLE +Exemple 1: add a language. It adds a new language by duplicating the referential. + php %1\$s -a add -l my_lang - add_key add a new key in the referential. This operation needs a KEY and - a VALUE. +Exemple 2: add a new key. It adds the key in the referential. + php %1\$s -a add -k my_key -v my_value - add_value - add a value in the referential. This operation needs a KEY, a - VALUE, and a LANGUAGE. +Exemple 3: add a new value. It adds a new value for the selected key in the selected language. + php %1\$s -a add -k my_key -v my_value -l my_lang - duplicate_key - duplicate a referential key in other languages. This operation - needs only a KEY. +Exemple 4: delete a key. It deletes the selected key in every languages. + php %1\$s -a delete -k my_key - delete_key - delete a referential key from all languages. This operation needs - only a KEY. +Exemple 5: duplicate a key. It duplicates the key from the referential in every languages. + php %1\$s -a duplicate -k my_key - format format i18n files. +Exemple 6: format i18n files. + php %1\$s -a format HELP; $file = str_replace(__DIR__ . '/', '', __FILE__); - echo sprintf($help, $file, $file); + echo sprintf($help, $file); exit; } |
