module Bashly::Completions

This is a `Command` concern responsible for providing bash completion data

Public Instance Methods

completion_data(with_version: true) click to toggle source
# File lib/bashly/concerns/completions.rb, line 6
def completion_data(with_version: true)
  result = { full_name => completion_words(with_version: with_version) }
  
  commands.each do |command|
    result.merge! command.completion_data(with_version: false)
  end

  result
end
completion_function(name = nil) click to toggle source
# File lib/bashly/concerns/completions.rb, line 20
def completion_function(name = nil)
  completion_generator.wrapper_function(name)
end
completion_script() click to toggle source
# File lib/bashly/concerns/completions.rb, line 16
def completion_script
  completion_generator.script
end

Private Instance Methods

completion_flag_names() click to toggle source
# File lib/bashly/concerns/completions.rb, line 30
def completion_flag_names
  flags.map(&:name) + flags.map(&:short)
end
completion_generator() click to toggle source
# File lib/bashly/concerns/completions.rb, line 26
def completion_generator
  Completely::Completions.new(completion_data)
end
completion_words(with_version: false) click to toggle source
# File lib/bashly/concerns/completions.rb, line 34
def completion_words(with_version: false)
  trivial_flags = %w[--help -h]
  trivial_flags += %w[--version -v] if with_version
  all = (
    command_names + trivial_flags +
    completion_flag_names
  )

  all += completions if completions
  all.compact.uniq.sort
end