#!/bin/sh set -euo set -x [ -f .clang-format ] && rm .clang-format # Use the provided clang-format, only define a version # if we don't have one provided already export CLANG_FORMAT="${CLANG_FORMAT:-clang-format-6.0}" # phosphor-mboxd is a fork of mboxbridge, the reference mbox daemon # implementation. mboxbridge is C written with the style of the Linux kernel. # # phosphor-mboxd extended the reference in C++, and used the OpenBMC C++ style. # # To remain compliant with the C++ style guide *and* preserve source # compatibility with the upstream reference implementation, use two separate # styles. # # Further, clang-format supports describing styles for multiple languages in # the one .clang-format file, but *doesn't* make a distinction between C and # C++. So we need two files. It gets worse: the -style parameter doesn't take # the path to a configuration file as an argument, you instead specify the # literal 'file' and it goes looking for a .clang-format or _clang-format file. # So now we need to symlink different files in place before calling # ${CLANG_FORMAT}. Everything is terrible. # # ln -sf .clang-format-c .clang-format # git ls-files | grep '\.[ch]$' | xargs "${CLANG_FORMAT}" -i -style=file ln -sf .clang-format-c++ .clang-format git ls-files | grep '\.[ch]pp$' | xargs "${CLANG_FORMAT}" -i -style=file rm .clang-format