diff --git a/.githooks/commit-msg b/.githooks/commit-msg new file mode 100755 index 0000000..ba6f5d9 --- /dev/null +++ b/.githooks/commit-msg @@ -0,0 +1,19 @@ +#!/bin/sh + +commit_message=$(<"$1") + +if ! [[ $commit_message =~ ^(vingo:|vinscant:|vinvoor:|zess:) ]]; then + echo "Error: commit message should start with vingo:|vinscant:|vinvoor:|zess: depending on which subproject you are working on." + exit 1 +fi + +if ! [[ $commit_message =~ ^.*:\ [a-z].* ]]; then + echo "Error: first letter after project specifier should be lower case +Example: + vingo: add cheese + ^ + | this one" + exit 1 +fi + +exit 0 \ No newline at end of file diff --git a/.github/workflows/commit_message_check.yml b/.github/workflows/commit_message_check.yml new file mode 100644 index 0000000..8fc18df --- /dev/null +++ b/.github/workflows/commit_message_check.yml @@ -0,0 +1,29 @@ +name: commit message check +run-name: commit message check +on: [push] + +jobs: + check_commit_messages: + runs-on: ubuntu-latest + + steps: + - name: checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: check commit messages + run: | + git log --format="%s" origin/main..HEAD | while IFS= read -r message; do + if ! [[ $message =~ ^(vingo:|vinscant:|vinvoor:|zess:) ]]; then + echo $message + echo "Error: commit message should start with vingo:|vinscant:|vinvoor:|zess: depending on which subproject you are working on." + exit 1 + fi + + if ! [[ $message =~ ^.*:\ [a-z].* ]]; then + echo $message + echo "Error: first letter after project specifier should be lower case" + exit 1 + fi + done