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>
This commit is contained in:
Philip Withnall 2024-04-16 14:09:36 +01:00
parent 6024fb9753
commit 827bca3212
No known key found for this signature in database
GPG Key ID: DCDF5885B1F3ED73
5 changed files with 12 additions and 0 deletions

View File

@ -9,6 +9,7 @@
__app() {
case "${COMP_CWORD}" in
1)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "help version list-apps launch action list-actions" -- "${COMP_WORDS[1]}"))
return 0
;;
@ -16,6 +17,7 @@ __app() {
2)
case "${COMP_WORDS[1]}" in
launch|action|list-actions)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "$(gapplication list-apps)" -- "${COMP_WORDS[2]}"))
return 0
;;
@ -33,6 +35,7 @@ __app() {
action)
# Word 3 is the action name. This is the only one we can help with.
if [ "${COMP_CWORD}" == 3 ]; then
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "$(gapplication list-actions "${COMP_WORDS[2]}")" -- "${COMP_WORDS[3]}"))
return 0
else
@ -42,6 +45,7 @@ __app() {
;;
launch)
# Filenames...
# shellcheck disable=SC2207
COMPREPLY=($(compgen -A file "${COMP_WORDS[COMP_CWORD]}"))
return 0
;;

View File

@ -14,6 +14,7 @@ __gdbus() {
local suggestions
suggestions="$(gdbus complete "${COMP_LINE}" "${COMP_POINT}")"
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "$suggestions" -- "$cur"))
# Remove colon-word prefix from COMPREPLY items

View File

@ -111,6 +111,7 @@ __gio_location() {
__gio() {
# Complete subcommands
if (( COMP_CWORD == 1 )); then
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "help version cat copy info launch list mime mkdir monitor mount move open rename remove save set trash tree" -- "${COMP_WORDS[1]}"))
compopt +o nospace
return 0

View File

@ -35,6 +35,7 @@ __gresource() {
;;
sections|list|details|extract)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -f -- "${COMP_WORDS[${COMP_CWORD}]}"))
return 0
;;
@ -51,6 +52,7 @@ __gresource() {
esac
local IFS=$'\n'
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "${choices}" -- "${COMP_WORDS[${COMP_CWORD}]}"))
}

View File

@ -29,6 +29,7 @@ __gsettings() {
2)
case "${COMP_WORDS[$((coffset+1))]}" in
--schemadir)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -o dirnames -- "${COMP_WORDS[${COMP_CWORD}]}"))
return 0
;;
@ -40,6 +41,7 @@ __gsettings() {
choices="$(gsettings "$schemadir" list-schemas 2> /dev/null)"$'\n'"$(gsettings "$schemadir" list-relocatable-schemas 2> /dev/null | sed -e 's.$.:/.')"
;;
list-schemas)
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "--print-paths" -- "${COMP_WORDS[${COMP_CWORD}]}"))
return 0
;;
@ -65,6 +67,7 @@ __gsettings() {
4)
case "${COMP_WORDS[$((coffset+2))]}" in
set)
# shellcheck disable=SC2207
range=($(gsettings "$schemadir" range "${COMP_WORDS[$((coffset+2))]}" "${COMP_WORDS[$((coffset+3))]}" 2> /dev/null))
case "${range[0]}" in
enum)
@ -82,6 +85,7 @@ __gsettings() {
esac
local IFS=$'\n'
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "${choices}" -- "${COMP_WORDS[${COMP_CWORD}]}"))
}