summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-08 04:11:30 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-08 04:11:30 +0000
commitadf6297ec815edc2a4270384f83f0d96e09f25a1 (patch)
treefface2c797bbd3243d538b55ca28e2225ae96c5d /lib
parent163f974208f917e3e13a307778a6b6144065cd1d (diff)
* lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):
use io/console. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/user_interaction.rb34
1 files changed, 3 insertions, 31 deletions
diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb
index 1ab948dcb6..5db2dfd21c 100644
--- a/lib/rubygems/user_interaction.rb
+++ b/lib/rubygems/user_interaction.rb
@@ -224,41 +224,13 @@ class Gem::StreamUI
def ask_for_password(question)
return nil if not @ins.tty?
+ require 'io/console'
+
@outs.print(question + " ")
@outs.flush
- Gem.win_platform? ? ask_for_password_on_windows : ask_for_password_on_unix
- end
-
- ##
- # Asks for a password that works on windows. Ripped from the Heroku gem.
-
- def ask_for_password_on_windows
- require "Win32API"
- char = nil
- password = ''
-
- while char = Win32API.new("crtdll", "_getch", [ ], "L").Call do
- break if char == 10 || char == 13 # received carriage return or newline
- if char == 127 || char == 8 # backspace and delete
- password.slice!(-1, 1)
- else
- password << char.chr
- end
- end
-
- puts
- password
- end
-
- ##
- # Asks for a password that works on unix
-
- def ask_for_password_on_unix
- system "stty -echo"
- password = @ins.gets
+ password = @ins.noecho {@ins.gets}
password.chomp! if password
- system "stty echo"
password
end