summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraqua <aqua@iserlohn-fortress.net>2022-08-14 20:24:10 +0300
committeraqua <aqua@iserlohn-fortress.net>2022-08-14 20:24:10 +0300
commit1dc163c06639d6c225b25c9dd2955b21bbb706d3 (patch)
tree5a379a32304aca490df87211d0425220eea69643
parentUpdate CMakeLists to use Qt6 (diff)
downloadrekonq-1dc163c06639d6c225b25c9dd2955b21bbb706d3.tar.xz
pre-commit hook: Add clang-format check
-rw-r--r--.clang-format10
-rw-r--r--git_hooks/README8
-rwxr-xr-xgit_hooks/pre-commit/codingstyle_check61
-rwxr-xr-xgit_hooks/pre-commit/copyrightyear_check51
-rwxr-xr-xgit_hooks/pre-commit/makeobj_check46
-rw-r--r--hooks/README.md3
-rwxr-xr-xhooks/clang-format.sh24
-rwxr-xr-xhooks/pre-commit3
8 files changed, 40 insertions, 166 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 00000000..c033b363
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,10 @@
+---
+BasedOnStyle: LLVM
+AllowShortIfStatementsOnASingleLine: Always
+AllowShortBlocksOnASingleLine: 'true'
+AllowShortLoopsOnASingleLine: 'true'
+BreakBeforeBraces: Stroustrup
+ColumnLimit: '120'
+UseTab: Never
+
+...
diff --git a/git_hooks/README b/git_hooks/README
deleted file mode 100644
index d460b95c..00000000
--- a/git_hooks/README
+++ /dev/null
@@ -1,8 +0,0 @@
-These git hooks have been copied and adjusted from Arora code.
-
-Many thanks to Benjamin "icefox" Meyer for providing them.
-
---------------
-They are managed using the git-hooks tool (Available here http://github.com/icefox/git-hooks)
-
-To enable them run "git hooks --install"
diff --git a/git_hooks/pre-commit/codingstyle_check b/git_hooks/pre-commit/codingstyle_check
deleted file mode 100755
index dffebed5..00000000
--- a/git_hooks/pre-commit/codingstyle_check
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Benjamin C. Meyer <ben@meyerhome.net>
-# Copyright (C) 2011 by Andrea Diamantini <adjam7 at gmail dot com>
-#
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License or (at your option) version 3 or any later version
-# accepted by the membership of KDE e.V. (or its successor approved
-# by the membership of KDE e.V.), which shall act as a proxy
-# defined in Section 14 of version 3 of the license.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#######################################################################
-
-function test_file {
- file="${1}"
- echo ""
- echo "------- Checking style on .cpp files"
- tempfoo=`basename $0`
- newfile=`mktemp /tmp/${tempfoo}.XXXXXX` || exit 1
- astyle \
- --indent=spaces=4 \
- --style=allman \
- --indent-labels \
- --pad-oper \
- --pad-header \
- --unpad-paren \
- --keep-one-line-statements \
- --convert-tabs \
- --indent-preprocessor < $file > $newfile 2>> /dev/null
- diff "${file}" "${newfile}"
- r=$?
- rm "${newfile}"
- if [ $r != 0 ] ; then
- echo "Code style error in $file, please fix before commiting."
- exit 1
- fi
- echo "------- Style check PASSED"
- echo ""
-}
-
-case "${1}" in
- --about )
- echo "Check that the code follows a consistent code style."
- ;;
- * )
- for file in `git diff-index --cached --name-only HEAD | grep .cpp` ; do
- test_file "${file}"
- done
- ;;
-esac
diff --git a/git_hooks/pre-commit/copyrightyear_check b/git_hooks/pre-commit/copyrightyear_check
deleted file mode 100755
index a489e1e8..00000000
--- a/git_hooks/pre-commit/copyrightyear_check
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Benjamin C. Meyer <ben@meyerhome.net>
-# Copyright (C) 2011 by Andrea Diamantini <adjam7 at gmail dot com>
-#
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License or (at your option) version 3 or any later version
-# accepted by the membership of KDE e.V. (or its successor approved
-# by the membership of KDE e.V.), which shall act as a proxy
-# defined in Section 14 of version 3 of the license.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#######################################################################
-
-
-function test_file {
- year=`date +%Y`
- echo "------- checking copyright year: $file"
- grep $year $file >> /dev/null
- if [ $? -ne 0 ] ; then
- echo "------- Warning: $file seems to be missing a copyright string with the year $year in it.";
- exit 1
- else
- echo "------- checking copyright year: PASS"
- echo ""
- fi
-}
-
-case "${1}" in
- --about )
- echo "Check the files that are being committed for a copyright with a proper year."
- ;;
- * )
- for file in `git diff-index --cached --name-only HEAD | grep \.h$` ; do
- test_file "${file}"
- done
- for file in `git diff-index --cached --name-only HEAD | grep \.cpp$` ; do
- test_file "${file}"
- done
- ;;
-esac
diff --git a/git_hooks/pre-commit/makeobj_check b/git_hooks/pre-commit/makeobj_check
deleted file mode 100755
index 279c3554..00000000
--- a/git_hooks/pre-commit/makeobj_check
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Benjamin C. Meyer <ben@meyerhome.net>
-# Copyright (C) 2011 by Andrea Diamantini <adjam7 at gmail dot com>
-#
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License or (at your option) version 3 or any later version
-# accepted by the membership of KDE e.V. (or its successor approved
-# by the membership of KDE e.V.), which shall act as a proxy
-# defined in Section 14 of version 3 of the license.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#######################################################################
-
-
-function compile {
- unset GIT_DIR
- echo "------- Attempting to build in $PWD"
- makeobj --quiet
- if [ $? != 0 ] ; then
- echo "------- Build failed, fix failure before commiting";
- exit 1
- fi
-
- echo "------- Attempting to build PASS"
- echo ""
-}
-
-case "${1}" in
- --about )
- echo "Wherever you are make sure something compiles".
- ;;
- * )
- compile
- ;;
-esac
diff --git a/hooks/README.md b/hooks/README.md
new file mode 100644
index 00000000..d030e315
--- /dev/null
+++ b/hooks/README.md
@@ -0,0 +1,3 @@
+The commit hook has been copied from the kmail source code.
+
+To install, symlink the hooks into ``.git/hooks``
diff --git a/hooks/clang-format.sh b/hooks/clang-format.sh
new file mode 100755
index 00000000..716a80ff
--- /dev/null
+++ b/hooks/clang-format.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# Based on okular/hooks/pre-commit, credits go to Albert Astals Cid
+
+readonly output=$(git clang-format --extensions 'cpp,h,hpp,c' -v --diff)
+
+if [[ ! -f .clang-format ]]; then
+ if [[ TRUE = TRUE ]]; then
+ echo "ERROR: no .clang-format file found in repository root, abort format"
+ echo " run cmake for this repository to generate it"
+ else
+ echo "ERROR: no .clang-format file found in repository root, abort format"
+ echo "Make sure the KDEClangFormat CMake module is included, which will copy the KDE .clang-format file during the CMake configuration."
+ echo "Alternatively you can manually copy a .clang-format file to the repository root directory."
+ fi
+ exit 1
+fi
+if [[ "$output" == *"no modified files to format"* ]]; then exit 0; fi
+if [[ "$output" == *"clang-format did not modify any files"* ]]; then exit 0; fi
+
+echo "ERROR: You have unformatted changes, please format your files. You can do this using the following commands:"
+echo " git clang-format --extensions 'cpp,h,hpp,c' --force # format the changed parts"
+echo " git clang-format --extensions 'cpp,h,hpp,c' --diff # preview the changes done by the formatter"
+exit 1
diff --git a/hooks/pre-commit b/hooks/pre-commit
new file mode 100755
index 00000000..aa7cbe8a
--- /dev/null
+++ b/hooks/pre-commit
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+./hooks/clang-format.sh