Class: Thor::Completion::Bash::Subcmd

Inherits:
Thor
  • Object
show all
Defined in:
lib/thor/completion/bash/subcmd.rb

Overview

Thor added as a Thor.subcommand to the includer of Thor::Completion::Bash to expose Bash completion endpoints.

Constant Summary

Constants inherited from Thor

AmbiguousTaskError, DynamicTask, HELP_MAPPINGS, HiddenTask, ROOT, TEMPLATE_EXTNAME, THOR_RESERVED_WORDS, THOR_VERSION, Task, UndefinedTaskError, VERSION

Instance Attribute Summary

Attributes included from Base

#args, #options, #parent_options

Instance Method Summary collapse

Methods inherited from Thor

banner, baseclass, check_unknown_options!, check_unknown_options?, command_help, create_command, default_command, desc, disable_required_check, disable_required_check!, disable_required_check?, dispatch, dynamic_command_class, example, find_command_possibilities, help, #help, initialize_added, long_desc, map, method_option, method_options, normalize_command_name, #option_kwds, package_name, printable_commands, register, retrieve_command_name, running_from_source?, stop_on_unknown_option, stop_on_unknown_option!, stop_on_unknown_option?, subcommand, subcommand_classes, subcommand_help, subcommands

Methods included from Base

included, #initialize, #on_run_error, #on_run_success, register_klass_file, subclass_files, subclasses

Instance Method Details

#complete(*_) ⇒ void

This method returns an undefined value.

Execute Bash completion.

Parameters:

  • *_ (Array)

    Ignored - input custom read from ARGV.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/thor/completion/bash/subcmd.rb', line 52

def complete *_
  # logger.level = :trace

  logger.trace "Starting Bash complete...",
    ARGV: ARGV,
    args: args

  args = ARGV.dup

  args.shift while args[0] != '--'
  args.shift

  cur, prev, cword, split, *words = args

  request = Request.new \
    cur: cur, # options[:cur],
    prev: prev, # options[:prev],
    cword: cword.to_i, # options[:cword],
    split: split.truthy?, # options[:split],
    words: words

  logger.trace "Bash complete Request loaded",
    request: request

  results = begin
    self.class.target.bash_complete( request: request, index: 1 )
  rescue StandardError => error
    logger.error "Error raised processing Bash complete request",
      { request: request },
      error
    
    []
  end

  joined = results.shelljoin

  logger.trace "Sending Bash compelte response",
    request: request,
    results: results,
    joined: joined

  puts joined
  exit true
end

#setupnil

Print Bash source code to hook into complete to ‘$stdout`.

Returns:

  • (nil)


111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/thor/completion/bash/subcmd.rb', line 111

def setup
  bin = File.basename $0
  name = bin.underscore

  erb_src_path = ::Thor::ROOT.join  'support',
                                    'completion',
                                    'complete.inc.bash.erb'

  erb_src = erb_src_path.read

  bash_src = binding.erb erb_src

  puts bash_src

  nil
end