Class: Toys::Utils::CompletionEngine::Bash

Inherits:
Object
  • Object
show all
Defined in:
lib/toys/utils/completion_engine.rb

Overview

A completion engine for bash.

Instance Method Summary collapse

Constructor Details

#initialize(cli) ⇒ Bash

Create a bash completion engine.

Parameters:



23
24
25
# File 'lib/toys/utils/completion_engine.rb', line 23

def initialize(cli)
  @cli = cli
end

Instance Method Details

#runInteger

Perform completion in the current shell environment, which must include settings for the COMP_LINE and COMP_POINT environment variables. Prints out completion candidates, one per line, and returns a status code indicating the result.

  • 0 for success.
  • 1 if completion failed.
  • 2 if the environment is incorrect (e.g. expected environment variables not found)

Returns:

  • (Integer)

    status code



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/toys/utils/completion_engine.rb', line 40

def run
  return 2 if !::ENV.key?("COMP_LINE") || !::ENV.key?("COMP_POINT")
  line = ::ENV["COMP_LINE"].to_s
  point = ::ENV["COMP_POINT"].to_i
  point = line.length if point.negative?
  line = line[0, point]
  completions = run_internal(line)
  if completions
    completions.each { |completion| puts completion }
    0
  else
    1
  end
end