Module: Captive::ShellCompletions
- Defined in:
- lib/captive/shell_completions.rb
Constant Summary collapse
- ROOT_COMMANDS =
%w[apps env db login whoami console run logs version completions].freeze
- SUBCOMMANDS =
{ "apps" => %w[list info restart rebuild], "env" => %w[list], "db" => %w[restore], }.freeze
Class Method Summary collapse
Class Method Details
.bash ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/captive/shell_completions.rb', line 13 def self.bash all = (ROOT_COMMANDS + SUBCOMMANDS.values.flatten).uniq.join(" ") <<~BASH _captive_completions() { local cur prev words cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" case "$prev" in apps) COMPREPLY=($(compgen -W "#{SUBCOMMANDS["apps"].join(" ")}" -- "$cur")); return ;; env) COMPREPLY=($(compgen -W "#{SUBCOMMANDS["env"].join(" ")}" -- "$cur")); return ;; db) COMPREPLY=($(compgen -W "#{SUBCOMMANDS["db"].join(" ")}" -- "$cur")); return ;; esac COMPREPLY=($(compgen -W "#{ROOT_COMMANDS.join(" ")}" -- "$cur")) } complete -F _captive_completions captive BASH end |
.zsh ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/captive/shell_completions.rb', line 33 def self.zsh sub_cases = SUBCOMMANDS.map do |cmd, subs| " #{cmd}) compadd #{subs.join(" ")} ;;" end.join("\n") <<~ZSH _captive() { local state _arguments \\ '1: :->command' \\ '*: :->args' case $state in command) compadd #{ROOT_COMMANDS.join(" ")} ;; args) case ${words[2]} in #{sub_cases} esac ;; esac } compdef _captive captive ZSH end |