csc230-autoformat/autoformat.sh

42 lines
1.6 KiB
Bash
Executable File

#!/bin/zsh
# Format all c files
GLOB=( **/*.c )
# Astyle options:
# --mode=c : c formatting
# -xc : Brace attached to class names
# --style=stroustrup : stroustrup style (similar to 1tbs)
# -j : Always add brackets (even on one line if statements)
# -s2 : Three spaces
# -xG : Indent modifiers
# -S : Indent switches
# -K : Indent cases
# -N : Indent namespaces
# -xn : Attach bracket to namespace
# -xl : Attach inlines
# -n : Don't make a backup
# -p : Pad operators
# -H : Pad header (space after if, for, while)
OPTS=( --mode=c -xc --style=stroustrup -j -s2 -xG -S -K -N -xn -xl -n -p -H )
# Process the c files by adding the comment and removing newlines
perl "${0:h}/process.pl" $GLOB
# Colorize output if you can
if which colout>/dev/null; then
astyle $OPTS $GLOB|\grep -P '^(?!Unchanged)'|colout '(Formatted)' green||true
else
astyle $OPTS $GLOB|\grep -P '^(?!Unchanged)'||true
fi
# Now check for documentation
# Run doxygen, redirecting stdout to dev null, and setting stderr to $OUTPUT
if command -v doxygen >/dev/null; then
OUTPUT=$((doxygen "${0:h}/Doxyfile" > /dev/null) 2>&1)
# If there is output, something went wrong
if [ ! -z "$OUTPUT" ]; then
printf "$OUTPUT\n" >&2
return 2
fi
#TODO: We might need this in the future, bur for now, delete html directory
rm -r html || true
else
printf "You don't have doxygen installed. Can't check documentation\n" >&2
fi