Top Level Namespace

Defined Under Namespace

Modules: Kernel, Subversion Classes: Array, IO, Object, String

Instance Method Summary collapse

Instance Method Details

#confirm(question, options = ['Yes', 'No']) ⇒ Object



133
134
135
136
137
138
139
140
141
142
# File 'lib/subwrap/svn_command.rb', line 133

def confirm(question, options = ['Yes', 'No'])
  print question + " " +
    "Yes".menu_item(:red) + ", " +
    "No".menu_item(:green) + 
    " > "
  response = ''
  # Currently allow user to press Enter to accept the default.
  response = $stdin.getch.downcase while !['y', 'n', "\n"].include?(begin response.downcase!; response end)
  response
end

#run_pagerObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/subwrap/pager.rb', line 3

def run_pager
  return if PLATFORM =~ /win32/
  return unless STDOUT.tty?

  read, write = IO.pipe

  unless Kernel.fork # Child process
    STDOUT.reopen(write)
    STDERR.reopen(write) if STDERR.tty?
    read.close
    write.close
    return
  end

  # Parent process, become pager
  STDIN.reopen(read)
  read.close
  write.close

  ENV['LESS'] = 'FSRX' # Don't page if the input is short enough

  Kernel.select [STDIN] # Wait until we have input before we start the pager
  pager = ENV['PAGER'] || 'less'
  exec pager rescue exec "/bin/sh", "-c", pager
end