125 lines
3.7 KiB
Bash
Executable File
125 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2010-2025, Lawrence Livermore National Security, LLC. Produced
|
|
# at the Lawrence Livermore National Laboratory. All Rights reserved. See files
|
|
# LICENSE and NOTICE for details. LLNL-CODE-806117.
|
|
#
|
|
# This file is part of the MFEM library. For more information and source code
|
|
# availability visit https://mfem.org.
|
|
#
|
|
# MFEM is free software; you can redistribute it and/or modify it under the
|
|
# terms of the BSD-3 license. We welcome feedback and contributions, see file
|
|
# CONTRIBUTING.md for details.
|
|
|
|
option=${1:-""}
|
|
|
|
if [[ "${option}" == "--help" ]]; then
|
|
echo "This script runs checks on the repository."
|
|
echo "It has 2 modes: with and without an option."
|
|
echo ""
|
|
echo "Options are used in GitHub Actions and can be:"
|
|
echo " --copyright"
|
|
echo " --license"
|
|
echo " --release"
|
|
echo " --math"
|
|
echo " --style"
|
|
echo " --history"
|
|
echo ""
|
|
echo "As a githook, the script is used without options."
|
|
echo "In that case, it will run all the checks except style."
|
|
echo ""
|
|
echo "Use --help to print this help message."
|
|
fi
|
|
|
|
cd $(git rev-parse --show-toplevel)
|
|
|
|
# copyright check
|
|
copyright=true
|
|
if [[ "${option}" == "--copyright" || "${option}" == "" ]]; then
|
|
if git grep -n "^\(#\|//\).*Copyright.*2010-20\(2[^5]\|[^2].\)" > matches.txt; then
|
|
echo "Please update the following files to Copyright (c) 2010-2025:"
|
|
cat matches.txt
|
|
copyright=false
|
|
fi
|
|
fi
|
|
|
|
# license check
|
|
license=true
|
|
if [[ "${option}" == "--license" || "${option}" == "" ]]; then
|
|
if git grep -li "^\(#\|//\).*GNU\ Lesser\ General\ Public\ License" > matches.txt; then
|
|
echo "Please update the following files to the BSD-3 license:"
|
|
cat matches.txt
|
|
license=false
|
|
fi
|
|
fi
|
|
|
|
# release check
|
|
release=true
|
|
if [[ "${option}" == "--release" || "${option}" == "" ]]; then
|
|
if git grep -l "^\(#\|//\).*LLNL\-CODE\-443211" > matches.txt
|
|
then
|
|
echo "Please update the following files to LLNL-CODE-806117:"
|
|
cat matches.txt
|
|
release=false
|
|
fi
|
|
fi
|
|
|
|
# math in doxygen check
|
|
math=true
|
|
if [[ "${option}" == "--math" || "${option}" == "" ]]; then
|
|
if grep '\\f' -R doc/CodeDocumentation.dox mfem.hpp config general linalg mesh fem examples miniapps | grep -v '\\frac' | grep -v fem/picojson.h | grep -v config/githooks/pre-push > matches.txt
|
|
then
|
|
echo "Please use $..$ and \$\$..\$\$ for LaTeX formulas in the following"
|
|
echo "comments instead of the Doxygen style \f$..\f$, \f[..\f], etc."
|
|
cat matches.txt
|
|
math=false
|
|
fi
|
|
fi
|
|
|
|
# wrap-up
|
|
code=0
|
|
if ! $copyright ; then
|
|
echo "copyright check failed, unroll log for details"
|
|
code=1
|
|
fi
|
|
if ! $license ; then
|
|
echo "license check failed, unroll log for details"
|
|
code=1
|
|
fi
|
|
if ! $release ; then
|
|
echo "release check failed, unroll log for details"
|
|
code=1
|
|
fi
|
|
if ! $math ; then
|
|
echo "math in doxygen check failed, unroll log for details"
|
|
code=1
|
|
fi
|
|
|
|
# `code-style` is not just a check, it will actually reformat the code if
|
|
# necessary. This means that if one pushes while the repo is in dirty state
|
|
# (changes not staged), those changes may be mixed with format changes.
|
|
# To activate this, you will need to hard-copy this hook script in the hook
|
|
# directory and uncomment only then. (See README.md)
|
|
#
|
|
## style check
|
|
#if [[ "${option}" == "--style" || "${option}" == "" ]]; then
|
|
if [[ "${option}" == "--style" ]]; then
|
|
if which astyle && [[ "$(astyle --version)" == "Artistic Style Version 3.1" ]]; then
|
|
cd tests/scripts
|
|
if ! ./runtest code-style; then code=1; fi
|
|
cd -
|
|
else
|
|
echo "Warning: astyle not found or version is not 3.1"
|
|
fi
|
|
fi
|
|
|
|
# branch-history
|
|
if [[ "${option}" == "--history" || "${option}" == "" ]]; then
|
|
git fetch origin master:master
|
|
cd tests/scripts
|
|
if ! ./runtest branch-history; then code=1; fi
|
|
cd -
|
|
fi
|
|
|
|
exit $code
|