summaryrefslogtreecommitdiffstats
path: root/examples/my_commit_rules.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/my_commit_rules.py')
-rw-r--r--examples/my_commit_rules.py35
1 files changed, 20 insertions, 15 deletions
diff --git a/examples/my_commit_rules.py b/examples/my_commit_rules.py
index e12e02d..35bb836 100644
--- a/examples/my_commit_rules.py
+++ b/examples/my_commit_rules.py
@@ -1,9 +1,9 @@
from gitlint.rules import CommitRule, RuleViolation
from gitlint.options import IntOption, ListOption
-from gitlint import utils
-
"""
+Full details on user-defined rules: https://jorisroovers.com/gitlint/user_defined_rules
+
The classes below are examples of user-defined CommitRules. Commit rules are gitlint rules that
act on the entire commit at once. Once the rules are discovered, gitlint will automatically take care of applying them
to the entire commit. This happens exactly once per commit.
@@ -25,19 +25,21 @@ class BodyMaxLineCount(CommitRule):
id = "UC1"
# A rule MAY have an option_spec if its behavior should be configurable.
- options_spec = [IntOption('max-line-count', 3, "Maximum body line count")]
+ options_spec = [IntOption("max-line-count", 3, "Maximum body line count")]
def validate(self, commit):
+ self.log.debug("BodyMaxLineCount: This will be visible when running `gitlint --debug`")
+
line_count = len(commit.message.body)
- max_line_count = self.options['max-line-count'].value
+ max_line_count = self.options["max-line-count"].value
if line_count > max_line_count:
- message = "Body contains too many lines ({0} > {1})".format(line_count, max_line_count)
+ message = f"Body contains too many lines ({line_count} > {max_line_count})"
return [RuleViolation(self.id, message, line_nr=1)]
class SignedOffBy(CommitRule):
- """ This rule will enforce that each commit contains a "Signed-Off-By" line.
- We keep things simple here and just check whether the commit body contains a line that starts with "Signed-Off-By".
+ """This rule will enforce that each commit contains a "Signed-off-by" line.
+ We keep things simple here and just check whether the commit body contains a line that starts with "Signed-off-by".
"""
# A rule MUST have a human friendly name
@@ -47,16 +49,18 @@ class SignedOffBy(CommitRule):
id = "UC2"
def validate(self, commit):
+ self.log.debug("SignedOffBy: This will be visible when running `gitlint --debug`")
+
for line in commit.message.body:
- if line.startswith("Signed-Off-By"):
+ if line.startswith("Signed-off-by"):
return
- return [RuleViolation(self.id, "Body does not contain a 'Signed-Off-By' line", line_nr=1)]
+ return [RuleViolation(self.id, "Body does not contain a 'Signed-off-by' line", line_nr=1)]
class BranchNamingConventions(CommitRule):
- """ This rule will enforce that a commit is part of a branch that meets certain naming conventions.
- See GitFlow for real-world example of this: https://nvie.com/posts/a-successful-git-branching-model/
+ """This rule will enforce that a commit is part of a branch that meets certain naming conventions.
+ See GitFlow for real-world example of this: https://nvie.com/posts/a-successful-git-branching-model/
"""
# A rule MUST have a human friendly name
@@ -66,11 +70,13 @@ class BranchNamingConventions(CommitRule):
id = "UC3"
# A rule MAY have an option_spec if its behavior should be configurable.
- options_spec = [ListOption('branch-prefixes', ["feature/", "hotfix/", "release/"], "Allowed branch prefixes")]
+ options_spec = [ListOption("branch-prefixes", ["feature/", "hotfix/", "release/"], "Allowed branch prefixes")]
def validate(self, commit):
+ self.log.debug("BranchNamingConventions: This line will be visible when running `gitlint --debug`")
+
violations = []
- allowed_branch_prefixes = self.options['branch-prefixes'].value
+ allowed_branch_prefixes = self.options["branch-prefixes"].value
for branch in commit.branches:
valid_branch_name = False
@@ -80,8 +86,7 @@ class BranchNamingConventions(CommitRule):
break
if not valid_branch_name:
- msg = "Branch name '{0}' does not start with one of {1}".format(branch,
- utils.sstr(allowed_branch_prefixes))
+ msg = f"Branch name '{branch}' does not start with one of {allowed_branch_prefixes}"
violations.append(RuleViolation(self.id, msg, line_nr=1))
return violations