#!/bin/bash set -e ########################### # Check tools # If any C files are formatted if [[ "$*" == *.c* ]]; then if ! command -v clang-format >/dev/null 2>&1; then echo "$0: requires clang-format." >&2 exit 127 fi if ! command -v python3 >/dev/null 2>&1; then echo "$0: requires python3." >&2 exit 127 fi fi # If any Python files are formatted if [[ "$*" == *.py* ]]; then if ! command -v black >/dev/null 2>&1; then echo "$0: requires black (python formatter)." >&2 echo "" >&2 echo "You can install \`black\` using pip3:" >&2 echo "" >&2 echo " pip3 install --user black" >&2 echo "" >&2 exit 127 fi fi if [[ "$#" == 0 ]]; then echo "usage: $0 <source.c> ..." exit 1 fi script_dir="$(dirname "$0")" for source_file in "$@"; do # Check if file is actually one which we want to check rel_path="$(realpath --relative-to="$script_dir/.." "$source_file")" if [[ ( "$rel_path" == lib/* && "$rel_path" != lib/card10/* ) || ( "$rel_path" == openocd/* ) ]]; then echo " - Ignoring $source_file" continue fi if [[ "$source_file" == *.c ]]; then echo " - Formatting $source_file ..." clang-format -i "$source_file" python3 "$script_dir/fix-multi-decl.py" "$source_file" elif [[ "$source_file" == *.py ]]; then echo " - Formatting $source_file ..." black -q "$source_file" else echo " - Ignoring $source_file" >&2 fi done