aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/scripts
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-06-13 00:11:21 +0200
committerEgor Tensin <egor@tensin.name>2026-06-13 00:11:21 +0200
commit7f81b5305b4b125091a22f12f4547abe09fc2997 (patch)
tree77b1507d901cd574353d31fbed601ebe18232237 /scripts
parentworkflows/ci: windows-2025 ships with VS 2026 now (diff)
downloadmath-server-7f81b5305b4b125091a22f12f4547abe09fc2997.tar.gz
math-server-7f81b5305b4b125091a22f12f4547abe09fc2997.zip
add scripts to setup git hooks
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/pre-commit.sh22
-rwxr-xr-xscripts/setup-hooks.sh26
2 files changed, 48 insertions, 0 deletions
diff --git a/scripts/pre-commit.sh b/scripts/pre-commit.sh
new file mode 100755
index 0000000..fd1f7dd
--- /dev/null
+++ b/scripts/pre-commit.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+set -o errexit -o nounset -o pipefail
+shopt -s inherit_errexit lastpipe
+
+if ! command -v git-clang-format &> /dev/null; then
+ echo 'Please make sure git-clang-format is available.' >&2
+ exit 1
+fi
+
+output="$( git clang-format --style file --diff )" || true
+
+ok1='no modified files to format'
+ok2='clang-format did not modify any files'
+
+if [ "$output" != "$ok1" ] && [ "$output" != "$ok2" ]; then
+ echo "$output"
+ echo
+ echo 'clang-format required some formatting fixes.'
+ echo 'Please stage your changes, run `git clang-format`, review the formatting fixes, and commit.'
+ exit 1
+fi
diff --git a/scripts/setup-hooks.sh b/scripts/setup-hooks.sh
new file mode 100755
index 0000000..dad7e79
--- /dev/null
+++ b/scripts/setup-hooks.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+set -o errexit -o nounset -o pipefail
+shopt -s inherit_errexit lastpipe
+
+script_dir="$( dirname -- "${BASH_SOURCE[0]}" )"
+script_dir="$( cd -- "$script_dir" && pwd )"
+
+setup_clang_format_hook() {
+ local gitdir
+ gitdir="$( git rev-parse --git-dir )"
+ local hooks_dir
+ hooks_dir="$gitdir/hooks"
+
+ local symlink_dest
+ symlink_dest="$( realpath "--relative-to=$hooks_dir" -- "$script_dir/pre-commit.sh" )"
+
+ ln -fs -- "$symlink_dest" "$hooks_dir/pre-commit"
+}
+
+main() {
+ cd -- "$script_dir"
+ setup_clang_format_hook
+}
+
+main