86 lines
2.4 KiB
Bash
Executable File
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
|