Files
mfem/tests/scripts/code-style
T

86 lines
2.4 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.
# Print usage information
case $1 in
-h|-help)
cat <<EOF
$0 [-h|-help] {mfem_dir}
where: {mfem_dir} is the MFEM source directory [default value: ../..]
-h|-help prints this usage information and exits
This script checks if the code in mfem_dir conforms to the MFEM C++ style
(currently based on astyle-3.1). Note that the comparison is done with
"git diff", so all differences between mfem_dir and the repository will be
reported. The local changes can be erased (lost!) with "git checkout .".
In addition to C++ styling, the script also verifies that std::cout and
std::cerr are not used in the library (use mfem::out and mfem::err instead).
Example usage: $0 ../..
EOF
exit
;;
esac
# Setup
cur_dir=`pwd`
mfem_dir=$1
if [ "$mfem_dir" = "" ]; then
mfem_dir="../.."
fi
if [ ! -d $mfem_dir ] || [ ! -f $mfem_dir/mfem.hpp ]; then
printf "Invalid mfem directory: '$mfem_dir'\n" 1>&2
exit 1
fi
cd $mfem_dir
mfem_dir=`pwd`
shift
# Verify C++ code styling in MFEM
cd $mfem_dir
# make distclean
if [ -t 1 ]; then
make style
else
make_style_out="$(make style 2>&1)"
if [ "$?" -eq 0 ]; then
printf "%s\n" "$make_style_out"
else
printf "%s\n" "$make_style_out" 1>&2
fi
fi
git --no-pager diff 1>&2
# Return to the original directory
cd $cur_dir
# Tell users what to do if the script fails
test_name="$(basename "$0")"
if [ -s "$test_name.err" ]; then
cat > $test_name.msg <<EOF
To correct this error, run 'make style' and make sure that:
1) You are using Artistic Style 3.1 ("astyle --version").
2) There is no use of std::cout or std::cerr inside the library code (examples
and miniapps are OK). Use mfem::out and mfem::err instead.
3) Run "make style" to apply astyle formatting and verify your code.
Please contact a member of the MFEM team if you have questions.
EOF
fi