Skip to content

Commit

Permalink
feat(pre-commit): Add commit message linting
Browse files Browse the repository at this point in the history
Signed-off-by: Lorenzo Vagliano
  • Loading branch information
Lorenzovagliano authored and pamfilos committed Oct 29, 2024
1 parent 8bf53de commit 8d77c73
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .gitlint
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[general]
ignore=body-is-missing
extra-path=./scripts/gitlint_rules/
debug=true
verbosity=3
contrib = contrib-body-requires-signed-off-by, contrib-title-conventional-commits

[title-max-length]
line-length=50

[body-max-line-length]
line-length=72
9 changes: 9 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ repos:
args: ["--config=setup.cfg"]
additional_dependencies: [flake8-isort]

- repo: https://github.com/jorisroovers/gitlint
rev: "v0.17.0"
hooks:
- id: gitlint
language: python
entry: gitlint
stages: [commit-msg]
args: [--msg-filename]

# sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date
ci:
autoupdate_schedule: weekly
Expand Down
41 changes: 41 additions & 0 deletions scripts/gitlint_rules/rules.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# import re

# from gitlint.rules import CommitRule, RuleViolation

# EXAMPLE GITLINT CONFIGURATION

# class SignedOffBy(CommitRule):
# """This rule will enforce that each commit contains a "Signed-off-by" line."""

# name = "body-requires-signed-off-by"
# id = "Workflows1"

# def validate(self, commit):
# for line in commit.message.body:
# if line.startswith("Signed-off-by"):
# return

# msg = "Body does not contain a 'Signed-Off-By' line"
# return [RuleViolation(self.id, msg, line_nr=1)]


# class ApprovedSubject(CommitRule):
# """Validate subject of each commit.

# This rule will enforce that each commit starts with a "module: text" format.
# The 'module' can be any alphanumeric word, and the message must start with a colon followed by a space.
# """

# name = "approved-subject-in-title"
# id = "Workflows2"

# MODULE_PATTERN = re.compile(r"^[a-zA-Z0-9_-]+: .+")

# def validate(self, commit):
# title = commit.message.title

# if not self.MODULE_PATTERN.match(title):
# msg = "Subject does not follow 'module: text' format"
# return [RuleViolation(self.id, msg, line_nr=1)]

# return

0 comments on commit 8d77c73

Please sign in to comment.