class GHI::Commands::Config

Public Instance Methods

execute() click to toggle source
# File lib/ghi/commands/config.rb, line 21
def execute
  # TODO: Investigate whether or not this variable is needed
  global = true
  
  options.parse! args.empty? ? %w(-h) : args

  if action == 'auth'
    assigns[:password] = Authorization.password || get_password
    Authorization.authorize!(
      assigns[:username], assigns[:password], assigns[:local]
    )
  end
end
options() click to toggle source
# File lib/ghi/commands/config.rb, line 4
      def options
        OptionParser.new do |opts|
          opts.banner = <<EOF
usage: ghi config [options]
EOF
          opts.separator ''
          opts.on '--local', 'set for local repo only' do
            assigns[:local] = true
          end
          opts.on '--auth [<username>]' do |username|
            self.action = 'auth'
            assigns[:username] = username || Authorization.username
          end
          opts.separator ''
        end
      end

Private Instance Methods

get_password() click to toggle source
# File lib/ghi/commands/config.rb, line 37
def get_password
  print "Enter #{assigns[:username]}'s GitHub password (never stored): "
  current_tty = `stty -g`
  system 'stty raw -echo -icanon isig' if $?.success?
  input = ''
  while char = $stdin.getbyte and not (char == 13 or char == 10)
    if char == 127 or char == 8
      input[-1, 1] = '' unless input.empty?
    else
      input << char.chr
    end
  end
  input
rescue Interrupt
  print '^C'
ensure
  system "stty #{current_tty}" unless current_tty.empty?
end