#!/bin/bash
set -euo pipefail
process_file() {
    local file="$1"
    temp_file=$(mktemp)
    expand -t 4 "$file" | sed 's/[[:space:]]*$//' > "$temp_file"
    sed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}' "$temp_file"
    sed -i -e '$a\' "$temp_file"
    sed -i '/^$/N;/^\n$/D' "$temp_file"
    sed -i 's/ \+\t/\t/g' "$temp_file"
    if ! cmp -s "$temp_file" "$file"; then
        mv "$temp_file" "$file"
        echo "fixed whitespace in $file"
    else
        rm "$temp_file"
    fi
}
files=`ls *.ino *.[ch]pp`
for file in $files; do
    process_file "$file"
done

jscpd $files

cppcheck --force --enable=all --suppress=missingIncludeSystem --std=c++21 --language=c++ -D DEBUG_PRINTF $files

egrep -n -e '^[^/].*[^ ] {2,}[^ ]' $files | egrep -v -n -e '\s{2,}\/\/' -e '"\s{2,}'

