2014-10-29 6 views
1

Я хочу чисто переопределить часть текста по умолчанию на Symfony\Component\Console, когда используется команда help или list. В частности, бесплатный перенос строки параметра verbosity меня очень сильно задевает, хотя в конечном итоге я также могу немного изменить оставшуюся часть текста справки/списка.Переопределить текст справки консоли по умолчанию

I.e. эта линия продукции:

--verbose -v|vv|vvv Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.

Было бы лучше, если бы я мог изменить его на что-то вроде:

--verbose -v|vv|vvv Set verbosity level.

Я мог бы подкласс Symfony\Component\Console\Application и переопределить метод getDefaultInputDefinition().

Возможно, я мог бы использовать комбинацию getDefinition() и setDefinition(), чтобы поиграть с объектом InputDefinition.

Но они не очень удобны в обслуживании.

Есть ли какой-нибудь другой, лучший способ сделать это?

+0

«уровни многословия» ничего не знаю о опции не объясняет, он просто повторяет имя параметра и значение ... –

+0

Это пример наполнителя. Я мог бы сказать «Lorem ipsum dolor». Дело в том, что, как давний пользователь командной строки Unix, я считаю, что консольная информация по умолчанию и текст списка непоследовательны и уродливы. Я хочу изменить его для соответствия большинству команд Unix. – CXJ

+0

Я нахожу, что помощь по умолчанию для консоли - _helpful_ - важнее, чем просто выглядеть или соответствовать стандартам. Тем не менее, вы делаете правильную точку, и это должно быть возможно переопределить их в ремонте. –

ответ

1

Попробуйте это. Я не уверен, что это сработает, но выглядит как самое близкое решение.

use Symfony\Component\Console\Application; 
use Symfony\Component\Console\Input\InputOption; 

public function overrideVerboseInputOption(Application $application) 
{ 
    $verboseOption = $application->getDefinition()->getOption('verbose'); 

    $customVerboseOption = new InputOption(
     $verboseOption->getName(), 
     $verboseOption->getShortcut(), 
     InputOption::VALUE_NONE, 
     "Set verbosity level" 
    ); 

    $options =& $application->getDefinition()->getOptions(); 

    unset($options['verbose']); 

    $application->getDefinition()->addOption($customVerboseOption); 
} 
+0

Я попробую и посмотрю, как это работает. Благодарю. – CXJ

+0

Он выдает следующую ошибку. Я постараюсь заставить его работать. '' 'Неустранимая ошибка: исключение исключения LogicException 'с сообщением' Невозможно установить значение по умолчанию при использовании режима InputOption :: VALUE_NONE. ' in ../ vendor/symfony/console/Symfony/Component/Console/Input/InputOption.php: 162'''' – CXJ

+0

@CXJ Извинения, у меня неправильный порядок аргументов. Я отредактировал код, попробуйте сейчас :) –

Смежные вопросы