feat(compl): Add bash completion (#1)
This commit is contained in:
parent
41838586a0
commit
54a1b9102c
40
hs
Normal file
40
hs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
_hs()
|
||||||
|
{
|
||||||
|
local cur prev
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
|
||||||
|
local settings_file
|
||||||
|
settings_file=~/'.heidisql/portable_settings.txt'
|
||||||
|
if [[ ! -r "${settings_file}" ]]; then
|
||||||
|
COMPREPLY="$(printf -- '%s' '<File '"${settings_file}"' not readable, nothing to auto-complete>')"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local saved_sessions
|
||||||
|
# Find all saved sessions where NetType is set to '2' aka 'MariaDB or
|
||||||
|
# MySQL (SSH tunnel)'
|
||||||
|
saved_sessions="$(grep -Pio -- '(?<=^Servers\\)[^\\]+(?=\\NetType<\|\|\|>[[:digit:]]<\|\|\|>2)' "${settings_file}" | sort | uniq)"
|
||||||
|
|
||||||
|
# Commands below depend on this IFS
|
||||||
|
local IFS=$'\n'
|
||||||
|
|
||||||
|
if [[ "${prev}" != 'hs' ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${cur}" == * ]]; then
|
||||||
|
# Filter our candidates
|
||||||
|
CANDIDATES=($(compgen -W "${saved_sessions[*]}" -- "${cur}"))
|
||||||
|
|
||||||
|
# Correctly set our candidates to COMPREPLY
|
||||||
|
if [[ "${#CANDIDATES[*]}" -eq '0' ]]; then
|
||||||
|
COMPREPLY=()
|
||||||
|
else
|
||||||
|
COMPREPLY=($(printf ''"'"'%s'"'"'\n' "${CANDIDATES[@]}"))
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
complete -F _hs hs
|
Loading…
x
Reference in New Issue
Block a user