/usr/share/bash-completion/completions/wb_command is in connectome-workbench 1.2.3+git41-gc4c6c90-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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 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 96 97 98 99 100 | # bash completion for wb_command
# Copyright (C) 2016 Washington University School of Medicine
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#put this file in (or link to it from) /etc/bash_completion.d or copy contents to ~/.bash_completion
function _wb_command()
{
#debug must be "false" or "true", because it *executes* it (because i'm lazy)
local debug=false
COMPREPLY=()
#use bash-completion's hacks to deal with the word splitting we don't want
local cur words cword
#use only space for splitting
_get_comp_words_by_ref -n "'"'"><=;|&(:' cur words cword
#NOTE: cur has the partial word that is *before* the cursor, but words has the entire word under the cursor
#wb_command doesn't need to know what the current partial word is, it spits out space-separated glob patterns and the like
#but we will need it in compgen afterwards
local wbopts=""
if ! shopt -q extglob
then
#bash-completion enables extglob, but work around it if it isn't set
wbopts="-noextglob"
fi
#only give wb_command the options coming *before* the one to complete, not even the partial word to complete
#also don't include the executable name ${words[0]}
$debug && echo
$debug && echo "exe call: wb_command -completion $wbopts ${words[@]:1:$((cword - 1))}"
local exereplyraw=`wb_command -completion $wbopts "${words[@]:1:$((cword - 1))}" 2> /dev/null`
local exestatus=$?
if [[ $exestatus != 0 ]]
then
return 1
fi
$debug && echo "exereplayraw: $exereplyraw"
#need to cause backslashes to escape spaces...
local -a exereply
IFS=' ' read -a exereply <<< "$exereplyraw"
$debug && echo "exereply: ${exereply[@]}"
for ((i = 0; i < ${#exereply[@]}; i += 2))
do
$debug && echo "key: ${exereply[$i]}"
$debug && echo "value: ${exereply[$((i + 1))]}"
case "${exereply[$i]}" in
fileglob)
#bash_completion itself uses -f -X for file extension matching
#using -G requires manually adding $cur before the pattern
COMPREPLY+=(`compgen -f -X "!${exereply[$((i + 1))]}" -- "$cur"`)
;;
wordlist)
#for the things accepted as bool, maybe other uses - happens to function like "option" for now
COMPREPLY+=(`compgen -W "${exereply[$((i + 1))]}" -- "$cur"`)
;;
esac
done
$debug && echo "COMPREPLY: ${COMPREPLY[@]}"
return 0
}
complete -o filenames -o bashdefault -o default -F _wb_command wb_command
#completion for wb_shortcuts - could be a separate file, but this is simpler
function _wb_shortcuts ()
{
COMPREPLY=()
#use bash-completion's hacks to deal with the word splitting we don't want
#we can only complete the first word, so only get cur and cword
local cur cword
#use only space for splitting
_get_comp_words_by_ref -n "'"'"><=;|&(:' cur cword
if ((cword != 1))
then
return 0
fi
local -a switches
readarray -t switches < <(wb_shortcuts -list-functions | awk '{print $1}')
COMPREPLY=(`compgen -W "${switches[*]}" -- "$cur"`)
}
complete -o filenames -o bashdefault -o default -F _wb_shortcuts wb_shortcuts
|