I want to make a ruby shell script that executes command from shell. What happens when the shell command needs the answer from a user?
For example, creating a new play framework application:
play new calimero
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~ play! 22.214.171.124, http://www.playframework.org
~ The new application will be created in /home/anquegi/src/11paths/buildsdeb/toni_build/devops-tools/packaging/packwithruby/calimero
~ What is the application name? [calimero] ~ <=== here asks to the user
value = %x(play new calimero)
This can also be accomplished with IO.expect
require 'pty' require 'expect' PTY.spawn("play new calimero") do |reader, writer| reader.expect(/What is the application name/) writer.puts("\n") end
This waits for the spawned process to display "What is the application name" and when it sees that prints a defined string (new line).