mirror of
https://github.com/envmodules/modules.git
synced 2026-05-30 00:12:31 +08:00
Following upcoming recommendation of Fedora to depreciate Aspell and migrate to Hunspell [1]. Update documentation and scripts to use Hunspell. [1] https://fedoraproject.org/wiki/Changes/AspellDeprecation
87 lines
2.4 KiB
Bash
Executable File
87 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# PRE-COMMIT, hook script to verify what is about to be committed
|
|
# Copyright (C) 2022-2023 Xavier Delaruelle
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
##########################################################################
|
|
|
|
# redirect output to stderr.
|
|
exec 1>&2
|
|
|
|
# apply SGR code to message if output channel is attached to terminal
|
|
sgr() {
|
|
local code=$1
|
|
local msg=$2
|
|
if [ -t 2 ]; then
|
|
echo "\033[${code}m${msg}\033[0m"
|
|
else
|
|
echo "$msg"
|
|
fi
|
|
}
|
|
|
|
echo_warning() {
|
|
echo -e "$(sgr 43 WARNING): $1"
|
|
}
|
|
|
|
echo_error() {
|
|
echo -e "$(sgr 41 ERROR): $1"
|
|
}
|
|
|
|
# fail if there are misspellings (check all files)
|
|
command -v codespell >/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
git diff --cached HEAD | grep '^[+][^+]' | codespell -
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
else
|
|
echo_warning "codespell command not found"
|
|
fi
|
|
|
|
# interactively check misspellings in doc files
|
|
command -v hunspell >/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
misspell=0
|
|
HUNSPELL_OPTS=(-d en_US -p .hunspell.en.dic)
|
|
for docfile in $(git diff --cached --name-only --diff-filter=d | grep -E\
|
|
'(.rst|.md)$'); do
|
|
words=$(git diff --cached "$docfile" | grep '^[+][^+]' | hunspell\
|
|
"${HUNSPELL_OPTS[@]}" -l)
|
|
if [ -n "$words" ]; then
|
|
# interactively edit file to fix misspellings
|
|
hunspell "${HUNSPELL_OPTS[@]}" "$docfile" </dev/tty >/dev/tty;
|
|
misspell=1
|
|
fi
|
|
done
|
|
# abort if misspellings were found as commit content should be adapted
|
|
if [ $misspell -eq 1 ]; then
|
|
echo_error "misspelling found, commit should be updated"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo_warning "hunspell command not found"
|
|
fi
|
|
|
|
# fail if there are whitespace errors
|
|
git diff-index --check --cached HEAD --
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|
|
|
|
# vim:set tabstop=3 shiftwidth=3 expandtab autoindent:
|