xref: /openbmc/openbmc-build-scripts/scripts/format-code.sh (revision 30ec0c46175cc9e03caf9f3d9670fa1c3fd009a3)
1#!/bin/bash
2
3# This script reformats source files using the clang-format utility.
4#
5# Files are changed in-place, so make sure you don't have anything open in an
6# editor, and you may want to commit before formatting in case of awryness.
7#
8# This must be run on a clean repository to succeed
9#
10# Input parmameter must be full path to git repo to scan
11
12DIR=$1
13cd ${DIR}
14
15set -e
16
17echo "Formatting code under $DIR/"
18
19if [[ -f "setup.cfg" ]]; then
20  pycodestyle --show-source .
21  rc=$?
22  if [[ ${rc} -ne 0 ]]; then
23    exit ${rc}
24  fi
25fi
26
27# Allow called scripts to know which clang format we are using
28export CLANG_FORMAT="clang-format-6.0"
29
30if [[ -f ".clang-format" ]]; then
31  find . -regextype sed -regex ".*\.[hc]\(pp\)\?" -not -name "*mako*" -print0 |\
32     xargs -0 "${CLANG_FORMAT}" -i
33  git --no-pager diff --exit-code
34fi
35
36# Sometimes your situation is terrible enough that you need the flexibility.
37# For example, phosphor-mboxd.
38if [[ -f "format-code.sh" ]]; then
39  ./format-code.sh
40  git --no-pager diff --exit-code
41fi
42