Created
December 13, 2017 07:52
-
-
Save leilee/1d0915a583f8f29414cc21cd86e7151b to your computer and use it in GitHub Desktop.
clang-format files recursively
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Variable that will hold the name of the clang-format command | |
FMT="" | |
# Some distros just call it clang-format. Others (e.g. Ubuntu) are insistent | |
# that the version number be part of the command. We prefer clang-format if | |
# that's present, otherwise we work backwards from highest version to lowest | |
# version. | |
for clangfmt in clang-format{,-{4,3}.{9,8,7,6,5,4,3,2,1,0}}; do | |
if which "$clangfmt" &>/dev/null; then | |
FMT="$clangfmt" | |
break | |
fi | |
done | |
# Check if we found a working clang-format | |
if [ -z "$FMT" ]; then | |
echo "failed to find clang-format" | |
exit 1 | |
fi | |
function format() { | |
for f in $(find $@ -name '*.h' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp'); do | |
echo "format ${f}"; | |
${FMT} -i ${f}; | |
done | |
echo "~~~ $@ Done ~~~"; | |
} | |
# Check all of the arguments first to make sure they're all directories | |
for dir in "$@"; do | |
if [ ! -d "${dir}" ]; then | |
echo "${dir} is not a directory"; | |
else | |
format ${dir}; | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment