Class: Clamp::Completion::FishGenerator
- Inherits:
-
Object
- Object
- Clamp::Completion::FishGenerator
- Defined in:
- lib/clamp/completion/fish_generator.rb
Overview
Generates fish shell completion scripts.
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(command_class, executable_name) ⇒ FishGenerator
constructor
A new instance of FishGenerator.
Constructor Details
#initialize(command_class, executable_name) ⇒ FishGenerator
Returns a new instance of FishGenerator.
9 10 11 12 |
# File 'lib/clamp/completion/fish_generator.rb', line 9 def initialize(command_class, executable_name) @command_class = command_class @executable_name = executable_name end |
Instance Method Details
#generate ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/clamp/completion/fish_generator.rb', line 14 def generate lines = [] lines << "# Fish completions for #{@executable_name}" lines << "# Generated by Clamp" lines << "" Completion.walk_command_tree(@command_class) do |cmd, path, has_children| child_names = has_children ? cmd.recognised_subcommands.flat_map(&:names) : [] condition = condition_for(path, child_names) Completion.(cmd).each do |option| lines << option_completion(option, condition) end next unless has_children cmd.recognised_subcommands.each do |sub| sub.names.each do |name| lines << "complete -c #{@executable_name} -f -n '#{condition}' -a #{name} " \ "-d '#{escape(sub.description)}'" end end lines << "" end "#{lines.join("\n")}\n" end |