Sha256: 477492ee7f61b5bd76030c5995b99405b51a4f305463c42aa485aa1059581b22

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

# = password.rb
#
# AUTHOR Thomas Sawywer
#
# TODO How to handle $PASSWORD?
#
# LOG 2006-11-08 trans <> Created from Ratchets password module.

module Console

  class Password

    def self.ask( forwhat=nil )
      new.ask( forwhat )
    end

    def initialize
      @password = nil
    end

    # ask for password

    def ask( forwhat=nil )
      print "Password for #{forwhat}: "
      until passwd = $stdin.gets.strip ; sleep 1 ; end
      @password = passwd
    end

    # ask and confirm password

    def ask_and_confirm( forwhat=nil )
      print "Password for #{forwhat}: "
      until passwd = $stdin.gets.strip ; sleep 1 ; end
      print "Confirm password: "
      until confirm = $stdin.gets.strip ; sleep 1 ; end
      if confirm == passwd
        @password = passwd
      end
    end

    # Returns cached password, or if it is not already set,
    # will ask for it.

    def password( refresh=nil, forwhat=nil )
      clear if refresh
      return @password if @password
      ask( forwhat )
    end

    # Clear the cached password.

    def clear
      @password = nil
    end

  end

  # Simple console password mixin.

  module PasswordMixin

    module_function

    # Returns cached password, or if it is not already set,
    # will ask for it.

    def password( clear=nil )
      password_clear if clear
      @password ||= Console::Password.ask
    end

    # Clear the cached password.

    def password_clear
      @password = nil
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
facets-1.8.0 work/more/password.rb
facets-1.8.20 work/more/password.rb
facets-1.8.49 work/more/password.rb
facets-1.8.8 work/more/password.rb