Enforce clang-format for c-like sources on Travis (#4089)
* Enforce clang-format for c-like sources on Travis
* Edit CONTRIBUTING,md
* review feedback:
* ++
* ++
* ++
diff --git a/.travis.yml b/.travis.yml
index 1ed00e9..c72c15b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,3 +6,4 @@
script:
- ./travis/build.sh
- ./travis/test.sh
+ - ./travis/format.sh
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5466bff..d0c7030 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -201,11 +201,13 @@
* Make sure you are in the `engine/src/flutter` directory.
* `git fetch upstream`
* `git checkout upstream/master -b name_of_your_branch`
- * Hack away. Please peruse our
- [style guides](https://flutter.io/style-guide/) and
- [design principles](https://flutter.io/design-principles/) before
- working on anything non-trivial. These guidelines are intended to
- keep the code consistent and avoid common pitfalls.
+ * Hack away.
+ * Please peruse our [style guides](https://flutter.io/style-guide/) and
+ [design principles](https://flutter.io/design-principles/) before
+ working on anything non-trivial. These guidelines are intended to
+ keep the code consistent and avoid common pitfalls.
+ * C, C++, and Objective-C code should be formatted with `clang-format` before
+ submission (use `buildtools/<OS>/clang/bin/clang-format --style=file -i`).
* `git commit -a -m "<your brief but informative commit message>"`
* `git push origin name_of_your_branch`
diff --git a/travis/format.sh b/travis/format.sh
new file mode 100755
index 0000000..0375cd2
--- /dev/null
+++ b/travis/format.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -e
+echo "Checking formatting..."
+cd ..
+
+case "$(uname -s)" in
+ Darwin)
+ OS="mac-x64"
+ ;;
+ Linux)
+ OS="linux-x64"
+ ;;
+ *)
+ echo "Unknown operating system."
+ exit -1
+ ;;
+esac
+
+CLANG_FORMAT="buildtools/$OS/clang/bin/clang-format"
+$CLANG_FORMAT --version
+
+FILES="$(find flutter/ -name '*.cpp' -or -name '*.h' -or -name '*.c' -or -name '*.cc' -or -name '*.m' -or -name '*.mm')"
+FAILED_CHECKS=0
+
+for FILE in $FILES; do
+ set +e
+ RESULT="$(diff -u "$FILE" <($CLANG_FORMAT --style=file "$FILE"))"
+ set -e
+ if ! [ -z "$RESULT" ]; then
+ echo "$RESULT"
+ FAILED_CHECKS=$(($counter+1))
+ fi
+done
+
+if [ $FAILED_CHECKS -ne 0 ]; then
+ echo "Some files are formatted incorrectly. To fix, apply diffs from above."
+fi
+
+exit $FAILED_CHECKS