@@ -284,12 +284,25 @@ AddToPythonFileArrays() {
284284 echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-PYTHON_RUFF_FORMAT"
285285}
286286
287+ AddToShfmtFileArray () {
288+ local FILE=" ${1} "
289+ debug " Adding ${FILE} to SHELL_SHFMT file array"
290+ echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-SHELL_SHFMT"
291+ }
292+
293+ AddToBashExecFileArray () {
294+ local FILE=" ${1} "
295+ debug " Adding ${FILE} to BASH_EXEC file array"
296+ echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-BASH_EXEC"
297+ }
298+
287299AddToShellFileArrays () {
288300 local FILE=" ${1} "
301+ debug " Adding ${FILE} to shell file arrays"
289302
290303 echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-BASH"
291- echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-BASH_EXEC "
292- echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-SHELL_SHFMT "
304+ AddToBashExecFileArray " ${FILE} "
305+ AddToShfmtFileArray " ${FILE} "
293306}
294307
295308AddToPerlFileArrays () {
@@ -308,12 +321,18 @@ CheckFileType() {
308321 local FILE
309322 FILE=" $1 "
310323
324+ local FILE_EXTENSION
325+ if ! FILE_EXTENSION=" $( GetFileExtension " $FILE " 2>&1 ) " ; then
326+ error " Error while getting the file extension for $FILE : $FILE_EXTENSION "
327+ return 1
328+ fi
329+
311330 local GET_FILE_TYPE_CMD
312331 if ! GET_FILE_TYPE_CMD=" $( file --brief " ${FILE} " 2>&1 ) " ; then
313332 error " Error while checking file type: ${GET_FILE_TYPE_CMD} "
314333 return 1
315334 fi
316- debug " Detected file type for ${FILE} : ${GET_FILE_TYPE_CMD} "
335+ debug " Detected file type for ${FILE} : ${GET_FILE_TYPE_CMD} . File extension: ${FILE_EXTENSION :- " not set " } "
317336
318337 local FILE_TYPE_MESSAGE
319338
@@ -331,12 +350,24 @@ CheckFileType() {
331350 AddToRubyFileArrays " ${FILE} "
332351 ;;
333352 * " zsh script" * )
334- FILE_TYPE_MESSAGE=" Found a ZSH script without extension: ${FILE} "
353+ FILE_TYPE_MESSAGE=" Found a ZSH script: ${FILE} "
354+ AddToBashExecFileArray " ${FILE} "
355+ AddToShfmtFileArray " ${FILE} "
335356 ;;
336357 * " POSIX shell script" * | * " Bourne-Again shell script" * | * " Dash shell script" * | * " Korn shell script" * | * " sh script" * )
337- FILE_TYPE_MESSAGE=" Found a Shell script without extension : ${FILE} "
358+ FILE_TYPE_MESSAGE=" Found a Shell script: ${FILE} "
338359 AddToShellFileArrays " ${FILE} "
339360 ;;
361+ * " ASCII text" * )
362+ FILE_TYPE_MESSAGE=" Found ASCII text: ${FILE} "
363+ # Check if the file is a shell script with the sh extension, without shebang
364+ if [[ " $FILE_EXTENSION " == " sh" ]]; then
365+ FILE_TYPE_MESSAGE=" Found a shell script without shebang: ${FILE} "
366+ AddToShellFileArrays " ${FILE} "
367+ else
368+ return 1
369+ fi
370+ ;;
340371 * )
341372 FILE_TYPE_MESSAGE=" Failed to get file type for: ${FILE} . Output: ${GET_FILE_TYPE_CMD} "
342373 return 1
@@ -528,12 +559,17 @@ BuildFileArrays() {
528559
529560 # Select files by extension or file name
530561
531- if [ " ${FILE_TYPE} " == " sh" ] ||
532- [ " ${FILE_TYPE} " == " bash" ] ||
562+ # Don't include .sh scripts so they fall in the 'else' clause where we
563+ # dynamically check their file type to avoid that we add ZSH scripts when
564+ # they are not supported.
565+ if [ " ${FILE_TYPE} " == " bash" ] ||
533566 [ " ${FILE_TYPE} " == " bats" ] ||
534567 [ " ${FILE_TYPE} " == " dash" ] ||
535568 [ " ${FILE_TYPE} " == " ksh" ]; then
536569 AddToShellFileArrays " ${FILE} "
570+ elif [ " ${FILE_TYPE} " == " zsh" ]; then
571+ AddToBashExecFileArray " ${FILE} "
572+ AddToShfmtFileArray " ${FILE} "
537573 elif [ " ${FILE_TYPE} " == " clj" ] || [ " ${FILE_TYPE} " == " cljs" ] ||
538574 [ " ${FILE_TYPE} " == " cljc" ] || [ " ${FILE_TYPE} " == " edn" ]; then # codespell:ignore edn
539575 echo " ${FILE} " >> " ${FILE_ARRAYS_DIRECTORY_PATH} /file-array-CLOJURE"
@@ -813,9 +849,11 @@ BuildFileArrays() {
813849}
814850
815851# We need so subprocesses (such as GNU Parallel) have access to these functions
816- export -f AddToPythonFileArrays
817- export -f AddToShellFileArrays
852+ export -f AddToBashExecFileArray
818853export -f AddToPerlFileArrays
854+ export -f AddToPythonFileArrays
819855export -f AddToRubyFileArrays
856+ export -f AddToShellFileArrays
857+ export -f AddToShfmtFileArray
820858export -f BuildFileArrays
821859export -f CheckFileType
0 commit comments