Class: Rex::Ui::Text::Shell::HistoryManager

Inherits:
Object
  • Object
show all
Defined in:
lib/rex/ui/text/shell/history_manager.rb

Constant Summary collapse

MAX_HISTORY =
2000

Instance Method Summary collapse

Constructor Details

#initializeHistoryManager

Returns a new instance of HistoryManager.



14
15
16
17
18
19
# File 'lib/rex/ui/text/shell/history_manager.rb', line 14

def initialize
  @contexts = []
  @debug = false
  @write_queue = ::Queue.new
  @currently_processing = ::Queue.new
end

Instance Method Details

#_contextsObject



52
53
54
# File 'lib/rex/ui/text/shell/history_manager.rb', line 52

def _contexts
  @contexts
end

#_debug=(value) ⇒ Object



56
57
58
# File 'lib/rex/ui/text/shell/history_manager.rb', line 56

def _debug=(value)
  @debug = value
end

#flushObject

Flush the contents of the write queue to disk. Blocks synchronously.



40
41
42
43
44
45
46
# File 'lib/rex/ui/text/shell/history_manager.rb', line 40

def flush
  until @write_queue.empty? && @currently_processing.empty?
    sleep 0.1
  end

  nil
end

#inspectObject



48
49
50
# File 'lib/rex/ui/text/shell/history_manager.rb', line 48

def inspect
  "#<HistoryManager stack size: #{@contexts.length}>"
end

#with_context(history_file: nil, name: nil, &block) ⇒ nil

Create a new history command context when executing the given block

Parameters:

  • history_file (String, nil) (defaults to: nil)

    The file to load and persist commands to

  • name (String) (defaults to: nil)

    Human readable history context name

  • block (Proc)

Returns:

  • (nil)


27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rex/ui/text/shell/history_manager.rb', line 27

def with_context(history_file: nil, name: nil, &block)
  push_context(history_file: history_file, name: name)

  begin
    block.call
  ensure
    pop_context
  end

  nil
end