style: limit line length per file extension

Editorconfig can only act based on file extension and path, not
attributes, it remains a mean only for multiple collaborators to use the
same configuration on their editor. When it is too restrictive, such as
not considering the file syntax, use a lint tool for the specific file
type instead of trusting editorconfig. Changes were made to increase
readability.
This commit is contained in:
Ben Grande 2024-07-09 17:42:07 +02:00
parent 2d0bf9784d
commit 011a71a36d
No known key found for this signature in database
GPG key ID: 00C64E14F51F9E56
37 changed files with 330 additions and 123 deletions

View file

@ -13,8 +13,38 @@ command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
cd "$(git rev-parse --show-toplevel)" || exit 1
./scripts/requires-program.sh shellcheck file
exit_code=0
find_tool="$(./scripts/best-program.sh fd fdfind find)"
show_long_lines(){
tty_stderr=0
if test -t 2; then
tty_stderr=1
fi
awk -v color="${tty_stderr}" '
BEGIN {
MAGENTA=""
GREEN=""
RESET=""
if (color == 1) {
MAGENTA="\033[1;35m"
GREEN="\033[1;32m"
RESET="\033[0m"
}
}
{
nlines++;
if (length > 78 && !/^\s*#.*(:\/\/|SPDX-)/) {
exit_code=1
prefix = MAGENTA FILENAME RESET ":" GREEN FNR RESET
print prefix ": line too long: " length " > 78" >"/dev/stderr"
if (nlines==NR) { if (exit_code==1) { exit 1; }; }
}
if (nlines==NR) { if (exit_code==1) { exit 1; }; }
}
' "${@}" >&2
}
if test -n "${1-}"; then
files=""
sh_files=""
@ -32,31 +62,40 @@ if test -n "${1-}"; then
if test -z "$files" && test -z "$sh_files"; then
exit 0
fi
test -z "$files" || shellcheck ${files}
test -z "$sh_files" || shellcheck -s sh ${sh_files}
exit
if test -n "${files}" || test -n "${sh_files}"; then
show_long_lines ${files} ${sh_files} || exit_code=1
fi
if test -n "${files}"; then
shellcheck ${files} || exit_code=1
fi
if test -n "${sh_files}"; then
shellcheck -s sh ${sh_files} || exit_code=1
fi
exit "${exit_code}"
fi
case "${find_tool}" in
fd|fdfind)
# shellcheck disable=2016,2215
files="$(${find_tool} . scripts/ salt/ --hidden --exclude=zsh --type=f \
--exec-batch file | awk -F ":" '/ shell script,/{ print $1 }')"
files="$(${find_tool} . scripts/ salt/ -H -E zsh -t f -X file |
awk -F ":" '/ shell script,/{ print $1 }')"
## No Shebang
sh_files="$(${find_tool} rc.local salt/ --type=f)"
;;
find)
files="$(find scripts/ salt/ -not \( -path "*/zsh" -prune \) -type f \
-exec file {} \+ | awk -F ":" '/ shell script,/{ print $1 }')"
-exec file {} \+ | awk -F ":" '/ shell script,/{ print $1 }')"
## No Shebang
sh_files="$(find salt/ -type f -name "rc.local")"
;;
esac
echo "${files}" | sort -u | tr " " "\n"
exit
files="$(echo "$files" | sort -u)"
sh_files="$(echo "$sh_files" | sort -u)"
#files="$(echo "$files" | sort -u)"
#sh_files="$(echo "$sh_files" | sort -u)"
#test -z "${files}" || shellcheck ${files}
#test -z "${sh_files}" || shellcheck -s sh ${sh_files}
show_long_lines ${files} ${sh_files} || exit_code=1
shellcheck ${files} || exit_code=1
if test -n "$sh_files"; then
shellcheck -s sh ${sh_files} || exit_code=1
fi
exit "${exit_code}"