glib/gio/completion/gresource
Philip Withnall 827bca3212
completion: Ignore SC2207 for COMPREPLY assigments
Using the same justification as in
https://gitlab.gnome.org/GNOME/dconf/-/merge_requests/81#note_2083220:
it’s hard to get this right, with error handling, in a way which is
understandable to people reading it, and which both bash and shellcheck
will be happy with.

On the assumption that none of the completions generated by any of these
utilities will include ‘problematic’ characters (ones which would cause
word splitting or globbing in bash), just ignore the shellcheck
warnings. Note that I have not actually closely verified that these
utilities can’t return ‘problematic’ characters.

This means we can enable shellcheck, with fatal warnings, for these
scripts, and hence catch future regressions.

If someone wants to improve the handling of globbing/word splitting in
some/all of these array assignments in future, the shellcheck disables
can be removed.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-04-16 14:09:36 +01:00

62 lines
1.4 KiB
Plaintext

# shellcheck shell=bash
# Check for bash
[ -z "$BASH_VERSION" ] && return
####################################################################################################
__gresource() {
local choices coffset
if [ "${COMP_CWORD}" -gt 2 ]; then
if [ "${COMP_WORDS[1]}" = --section ]; then
coffset=2
else
coffset=0
fi
else
coffset=0
fi
case "$((COMP_CWORD-coffset))" in
1)
choices=$'--section \nhelp \nsections \nlist \ndetails \nextract '
;;
2)
case "${COMP_WORDS[$((coffset+1))]}" in
--section)
return 0
;;
help)
choices=$'sections\nlist\ndetails\nextract'
;;
sections|list|details|extract)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -f -- "${COMP_WORDS[${COMP_CWORD}]}"))
return 0
;;
esac
;;
3)
case "${COMP_WORDS[$((coffset+1))]}" in
list|details|extract)
choices="$(gresource list "${COMP_WORDS[$((coffset+2))]}" 2> /dev/null | sed -e 's.$. .')"
;;
esac
;;
esac
local IFS=$'\n'
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "${choices}" -- "${COMP_WORDS[${COMP_CWORD}]}"))
}
####################################################################################################
complete -o nospace -F __gresource gresource