Browse Source

Add clang-format and editorconfig file

Stefan Profanter 6 years ago
parent
commit
e4e3f1e6eb
4 changed files with 93 additions and 3 deletions
  1. 7 0
      .clang-format
  2. 27 0
      .editorconfig
  3. 3 3
      .travis.yml
  4. 56 0
      tools/clang-format_precommit_hook

+ 7 - 0
.clang-format

@@ -0,0 +1,7 @@
+---
+Language:        Cpp
+BasedOnStyle:    llvm
+ColumnLimit:     120
+ForEachMacros:   [ foreach, LIST_FOREACH, LIST_FOREACH_SAFE ]
+DisableFormat:   false
+

+ 27 - 0
.editorconfig

@@ -0,0 +1,27 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+
+# Matches multiple files with brace expansion notation
+# Set default charset
+[*.{js,py}]
+charset = utf-8
+
+# Tab indentation (no size specified)
+[Makefile]
+indent_style = tab
+
+# Matches the exact files either package.json or .travis.yml
+[{package.json,.travis.yml,appveyor.yml}]
+indent_style = space
+indent_size = 2
+
+

+ 3 - 3
.travis.yml

@@ -50,9 +50,9 @@ matrix:
     - os: linux
       compiler: clang
       env: FUZZER=true
-    - os: linux
-      compiler: gcc
-      env: LINT=true
+    #- os: linux
+    #  compiler: gcc
+    #  env: LINT=true
     # - os: osx
     #   compiler: clang
     #   # disable homebrew auto update which takes a lot of time

+ 56 - 0
tools/clang-format_precommit_hook

@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# This pre-commit hook checks if any versions of clang-format
+# are installed, and if so, uses the installed version to format
+# the staged changes.
+#
+# To install, copy this script to `.git/hooks/pre-commit`:
+# ln -s ../../tools/clang-format_precommit_hook .git/hooks/pre-commit
+# and make sure that `clang-format` is installed on your system
+
+maj_min=1
+maj_max=3
+
+base=clang-format
+format=""
+
+# Redirect output to stderr.
+exec 1>&2
+
+ # check if clang-format is installed
+type "$base" >/dev/null 2>&1 && format="$base"
+
+# if not, check all possible versions
+# (i.e. clang-format-<$maj_min-$maj_max>-<0-9>)
+if [ -z "$format" ]
+then
+    for j in `seq $maj_max -1 $maj_min`
+    do
+        for i in `seq 0 9`
+        do
+            type "$base-$j.$i" >/dev/null 2>&1 && format="$base-$j.$i" && break
+        done
+        [ -z "$format" ] || break
+    done
+fi
+
+# no versions of clang-format are installed
+if [ -z "$format" ]
+then
+    echo "$base is not installed. Pre-commit hook will not be executed."
+    exit 0
+fi
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+	against=HEAD
+else
+	# Initial commit: diff against an empty tree object
+	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# do the formatting
+for file in `git diff-index --cached --name-only $against`
+do
+    "$format" -i "$file"
+done