Утилита командной строки: как сделать это правильно? - PullRequest
1 голос
/ 24 июня 2010

У меня есть несколько вопросов:

  1. Если есть ошибка, которая должна отображаться клиенту - это хорошая вещь, чтобы использовать поток STDERR вместо STDOUT? Или это тривиальная проблема?

  2. Я хочу добавить поддержку цвета в выходные сообщения этой утилиты. Нужно ли использовать для этого какую-то среду, устойчивую к окружающей среде? (Это может быть 256-цветный режим и «чистый»). Или как сделать это терпимым?

  3. Я боюсь добавлять цвета в вывод, потому что клиенты могут перенаправить вывод в файл журнала. Может ли это потенциально "сломать" что-нибудь из-за этого?

Пожалуйста, помогите мне собрать эту утилиту в UNIX-way(Do one thing and do it well).

Ответы [ 2 ]

5 голосов
/ 24 июня 2010

STDERR лучше, чем STDOUT для ошибок по нескольким причинам. Перенаправление вывода не скроет ошибки от вас. Вы можете предотвратить смешивание предупреждений с выводом, что в некоторых случаях облегчает анализ / обработку.

Возможно, вы захотите заглянуть в библиотеку curses, которая должна поддерживать наборы цветов ANSI.

Утилиты, подобные ls, обнаружат, перенаправлен ли их вывод, и сбросят цветовые коды, чтобы файлы журналов и т. Д. Не запирались. Вы должны сделать то же самое.

3 голосов
/ 25 июня 2010

Используйте STDERR.Что касается цветов, то ваше беспокойство можно устранить, проверив, является ли вывод tty перед печатью цветов.Во время инициализации сделайте проверку, которая включает или отключает цвета на лету.Также рекомендуется иметь флаг --color=[on|off|auto], который пользователь может передать, чтобы выбрать его явно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...