mirror of
https://github.com/flatpak/flatpak.git
synced 2026-01-26 16:48:33 -05:00
Currently flatpak's bash completion is a bit broken. It shows all files with the appropriate extension (.flatpak or .flatpakref) rather than just the ones starting with the characters you've already typed. So this commit fixes that behavior by using the -X compgen option rather than -G. For example, here's the old behavior: $ flatpak install e<TAB> bijiben.flatpak eos eos-runtimes builder.flatpak eos-apps eos-sdk and here's the new behavior: $ flatpak install e<TAB> eos eos-apps eos-runtimes eos-sdk $ flatpak install b<TAB> bijiben.flatpak builder.flatpak Closes: #1645 Approved by: alexlarsson
41 lines
1.3 KiB
Plaintext
Executable File
41 lines
1.3 KiB
Plaintext
Executable File
# Check for bash
|
|
[ -z "$BASH_VERSION" ] && return
|
|
|
|
####################################################################################################
|
|
|
|
__flatpak() {
|
|
local IFS=$'\n'
|
|
local cur=`_get_cword :`
|
|
RES=($(flatpak complete "${COMP_LINE}" "${COMP_POINT}" "${cur}"))
|
|
|
|
COMPREPLY=()
|
|
for i in "${!RES[@]}"; do
|
|
if [[ "${RES[$i]}" = "__FLATPAK_FILE" ]]; then
|
|
declare -a COMPGEN_OPTS=('-f')
|
|
elif [[ "${RES[$i]}" = "__FLATPAK_BUNDLE_FILE" ]]; then
|
|
declare -a COMPGEN_OPTS=('-f' '-X' '!*.flatpak')
|
|
elif [[ "${RES[$i]}" = "__FLATPAK_BUNDLE_OR_REF_FILE" ]]; then
|
|
declare -a COMPGEN_OPTS=('-f' '-X' '!*.flatpak@(|ref)')
|
|
elif [[ "${RES[$i]}" = "__FLATPAK_DIR" ]]; then
|
|
declare -a COMPGEN_OPTS=('-d')
|
|
else
|
|
declare -a COMPGEN_OPTS=()
|
|
fi
|
|
|
|
if [[ ${#COMPGEN_OPTS[@]} -ne 0 ]]; then
|
|
if [[ "${cur}" = "=" ]]; then
|
|
CUR=""
|
|
else
|
|
CUR="${cur}"
|
|
fi
|
|
COMPREPLY=("${COMPREPLY[@]}" $(compgen ${COMPGEN_OPTS[@]} -- "${CUR}") )
|
|
else
|
|
COMPREPLY=("${COMPREPLY[@]}" "${RES[$i]}")
|
|
fi
|
|
done
|
|
}
|
|
|
|
####################################################################################################
|
|
|
|
complete -o nospace -F __flatpak flatpak
|