использование конвейерного ввода в сочетании с пользовательским вводом в ruby - PullRequest
1 голос
/ 06 марта 2012

В настоящее время я работаю со сценарием, который определяет ожидаемые значения конфигурации, считывает файл конфигурации для значений и, наконец, запрашивает любые значения, ожидаемые, но не указанные в файле конфигурации.

Пример ожидаемых элементов конфигурации:

username password command directories

Пример файла конфигурации:

username:bob
command:"rm -rf / && echo bwahahahahaha"

Пример запроса:

password? userinput  
directories? userinput

Суть проблемы в том, что не все элементы конфигурации известны до выполнения,и может быть передан из текстового файла или из выходных данных другой программы, но может по-прежнему оставлять пробел в элементах конфигурации (вызывая приглашение).

[host]$ parametergeneratingscript.rb | paramaterreceivingscript.rb        # still needs to prompt for password  

Использование IO # tty?Я могу обнаружить ввод по каналу и, соответственно, прочитать из STDIN, но это происходит по всем приглашениям пользователя (которые также приходят из STDIN).Мне удобно переключаться между схемой config / prompt, но перед тем, как я убегу и разберусь с ней, мне было интересно, есть ли изящный способ "переключить" источник STDIN между вводом tty и piped?

1 Ответ

2 голосов
/ 10 июля 2012

Вы пробовали STDIN.reopen('/dev/tty')? Я полагаю, что это снова откроет STDIN для чтения с клавиатуры, а не с канала.

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