mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
49 lines
1.5 KiB
Bash
Executable File
49 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Script to add codespell exceptions to the ignores lines file.
|
|
#
|
|
# The file is named '...-lines-ignore' to make TAB expansion on the cli easier.
|
|
#
|
|
# The line in the ignore file must match the line in the source
|
|
# exactly.
|
|
#
|
|
# To clean up or create the ignored lines file, just do
|
|
# ```shell
|
|
# echo > dev/tools/codespell/codespell-lines-ignore.txt
|
|
# ```
|
|
# and then execute this script
|
|
#
|
|
# author: https://github.com/mdeweerd
|
|
|
|
codespell_ignore_file=dev/tools/codespell/codespell-lines-ignore.txt
|
|
if [ -z "${0##*.sh}" ] ; then
|
|
# Suppose running from inside script
|
|
# Get real path
|
|
script=$(realpath "$(test -L "$0" && readlink "$0" || echo "$0")")
|
|
PROJECT_ROOT=$(realpath "${script}")
|
|
|
|
while [ "${PROJECT_ROOT}" != "/" ] ; do
|
|
[ -r "${PROJECT_ROOT}/${codespell_ignore_file}" ] && break
|
|
PROJECT_ROOT=$(dirname "${PROJECT_ROOT}")
|
|
done
|
|
if [ "${PROJECT_ROOT}" == "" ] ; then
|
|
echo "Project root not found from '${script}'"
|
|
exit 1
|
|
fi
|
|
codespell_ignore_file=${PROJECT_ROOT}/${codespell_ignore_file}
|
|
fi
|
|
|
|
|
|
# Make sure we are at the root of the project
|
|
[ -r "${codespell_ignore_file}" ] || { echo "${codespell_ignore_file} not found" ; exit 1 ; }
|
|
# Then:
|
|
# - Run codespell;
|
|
# - For each line, create a grep command to find the lines;
|
|
# - Execute that command by evaluation
|
|
codespell . | perl -p -e 's@^(.*?):\d+:\s(\S+)\s.*@grep -P '"'"'\\b$2\\b'"'"' "$1" >> '"${codespell_ignore_file}"'@;' | \
|
|
while read -r line ; do eval "$line" ; done
|
|
|
|
# Finally, sort and remove duplicates to make merges easier.
|
|
sort -u -o "${codespell_ignore_file}"{,}
|
|
|