Class: Toys::Utils::CompletionEngine::Bash
- Inherits:
-
Object
- Object
- Toys::Utils::CompletionEngine::Bash
- Defined in:
- lib/toys/utils/completion_engine.rb
Overview
A completion engine for bash.
Instance Method Summary collapse
-
#initialize(cli) ⇒ Bash
constructor
Create a bash completion engine.
-
#run ⇒ Integer
Perform completion in the current shell environment, which must include settings for the
COMP_LINE
andCOMP_POINT
environment variables.
Constructor Details
#initialize(cli) ⇒ Bash
Create a bash completion engine.
23 24 25 |
# File 'lib/toys/utils/completion_engine.rb', line 23 def initialize(cli) @cli = cli end |
Instance Method Details
#run ⇒ Integer
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)
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 |