124 lines
4.3 KiB
Bash
Executable File
124 lines
4.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2019 The Khronos Group Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# checkCodespell - Run the codespell (https://github.com/codespell-project/codespell)
|
|
# tool on the specification, registry, scripts, and source. Forwards any command line arguments
|
|
# on to the codespell invocation.
|
|
#
|
|
# Usage: ./checkCodespell
|
|
# Any command-line arguments are passed along to the codespell call,
|
|
# so e.g. to fix interactively, do ./checkCodespell -q4 -w -i 3
|
|
#
|
|
# If no arguments are passed, the number of errors will be counted,
|
|
# and the script will exit with a non-zero error code if the number
|
|
# of warnings is greater than ${CODESPELL_IGNORE}
|
|
# (default defined below as DEFAULT_CODESPELL_IGNORE).
|
|
#
|
|
# Environment variable CODESPELL can be set to the path to codespell.
|
|
|
|
ROOT=$(dirname $0)
|
|
|
|
# How many lines of warnings should be ignored?
|
|
DEFAULT_CODESPELL_IGNORE=0
|
|
|
|
# This syntax allows the default to be overridden by external definition of CODESPELL_IGNORE
|
|
CODESPELL_IGNORE=${CODESPELL_IGNORE:-${DEFAULT_CODESPELL_IGNORE}}
|
|
|
|
# Add to this list when codespell mis-identifies a term actually used as a misspelling
|
|
# (comma-delimited)
|
|
IGNORE_WORDS="lod,LOD"
|
|
|
|
# Add to this to exclude individual files or directories (comma-delimited)
|
|
# - Skipping external code.
|
|
# - Skipping binary files.
|
|
SKIP="${ROOT}/src/external,${ROOT}/src/conformance/framework/catch2,*.pyc,*.png,*.jpg,*.svg"
|
|
|
|
# Args that get passed if no args are provided to this script.
|
|
# -q4 to silence "UINT ==> UNIT | disabled due to being a data type"
|
|
DEFAULT_ARGS="-q4"
|
|
|
|
which_codespell=$(which codespell)
|
|
|
|
CODESPELL=${CODESPELL:-${which_codespell}}
|
|
|
|
# This command is in a function so we can call it again easily to do a count.
|
|
doCodespell() {
|
|
${CODESPELL} --ignore-words-list="${IGNORE_WORDS}" \
|
|
--skip="${SKIP}" \
|
|
--exclude-file=${ROOT}/openxr-codespell.exclude \
|
|
"$@" \
|
|
${ROOT}/*.md \
|
|
${ROOT}/*.sh \
|
|
${ROOT}/*.bat \
|
|
${ROOT}/include/ \
|
|
${ROOT}/specification/check* \
|
|
${ROOT}/specification/make* \
|
|
${ROOT}/specification/*.md \
|
|
${ROOT}/specification/loader/ \
|
|
${ROOT}/specification/registry/ \
|
|
${ROOT}/specification/scripts/*.py \
|
|
${ROOT}/specification/scripts/*.rb \
|
|
${ROOT}/specification/scripts/openxr-macros/*.rb \
|
|
${ROOT}/specification/sources/ \
|
|
${ROOT}/src \
|
|
${ROOT}/vuid_database/ \
|
|
|
|
# Keep a blank line after the last pattern, so that a trailing backslash is OK!
|
|
}
|
|
|
|
echo "Using CODESPELL=${CODESPELL} - version $(${CODESPELL} --version)"
|
|
|
|
EXTRA_ARGS=""
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "No arguments passed, will use default arguments: ${DEFAULT_ARGS}"
|
|
EXTRA_ARGS="${DEFAULT_ARGS}"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
doCodespell "$@" ${EXTRA_ARGS}
|
|
|
|
if [ $# -eq 0 ]; then
|
|
# No arguments were passed, so this isn't, e.g., an interactive repair call.
|
|
# Thus, check it against our built-in requirements.
|
|
|
|
echo ""
|
|
echo "No arguments passed, so counting errors and comparing to CODESPELL_IGNORE=${CODESPELL_IGNORE}"
|
|
if [ ${CODESPELL_IGNORE} -ne ${DEFAULT_CODESPELL_IGNORE} ]; then
|
|
echo "Note: Manually-set CODESPELL_IGNORE is overriding the built in default value, DEFAULT_CODESPELL_IGNORE=${DEFAULT_CODESPELL_IGNORE}"
|
|
else
|
|
echo "(set from the built in default value, DEFAULT_CODESPELL_IGNORE)"
|
|
fi
|
|
echo ""
|
|
|
|
numErrors=$(doCodespell -q5 |wc -l)
|
|
echo "${numErrors} errors seen"
|
|
|
|
if [ "${numErrors}" -gt "${CODESPELL_IGNORE}" ]; then
|
|
echo "Error limit exceeded - exiting with error"
|
|
exit 1
|
|
else
|
|
echo "OK - limit not exceeded."
|
|
fi
|
|
|
|
if [ "${numErrors}" -lt "${DEFAULT_CODESPELL_IGNORE}" ]; then
|
|
echo ""
|
|
echo "Note: Error count is less than DEFAULT_CODESPELL_IGNORE,"
|
|
echo "please update that variable in $0 to tighten requirements."
|
|
fi
|
|
fi
|