module DbSucker::Patches::BetaWarning::DispatchOverrides

Public Instance Methods

_suck_variation(identifier, ctn, variation, var) click to toggle source
Calls superclass method
# File lib/db_sucker/patches/beta-warning.rb, line 82
def _suck_variation identifier, ctn, variation, var
  touch_file = "#{core_cfg_path}/.beta-warning"
  return super if File.exist?(touch_file)

  begin
    _thr = Thread.current
    begin
      trap_signals
      @sklaventreiber = Application::SklavenTreiber.new(self, uniqid)
      @sklaventreiber.spooled do
        begin
          @sklaventreiber._init_window
          @sklaventreiber.window.force_kill = true
          @sklaventreiber.window.send(:extend, WindowExtensions)

          view_was = @sklaventreiber.window.change_view(:beta_warning)
          @sklaventreiber.window.keypad.prompt!("[press any key to return]",
            return_on_buffer: Proc.new{|b, c| %w[y t 1 n f 0 q 27].include?(c.to_s.downcase) },
            capture_enter: false,
            has_cursor: false,
            capture_escape: false,
            cursor_visible: false
          ) do |response|
            if %w[y t 1].include?(response)
              FileUtils.mkdir_p(File.dirname(touch_file))
              FileUtils.touch(touch_file)
              _thr.raise(AcceptedContinue)
            else
              $core_runtime_exiting = 1
            end
          end

          loop do
            break if $core_runtime_exiting
            sleep 0.1
          end
        ensure
          sandboxed { @sklaventreiber.window.try(:stop) }
        end
      end
    ensure
      release_signals
    end

    throw :dispatch_handled
  rescue AcceptedContinue
    super
  end
end