summaryrefslogtreecommitdiffstats
path: root/ci/lint-commit-msg.py
diff options
context:
space:
mode:
Diffstat (limited to 'ci/lint-commit-msg.py')
-rwxr-xr-xci/lint-commit-msg.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/ci/lint-commit-msg.py b/ci/lint-commit-msg.py
index 4198ed4..10c7d18 100755
--- a/ci/lint-commit-msg.py
+++ b/ci/lint-commit-msg.py
@@ -1,12 +1,13 @@
#!/usr/bin/env python3
import os, sys, json, subprocess, re
+from typing import Dict, Tuple, Callable, Optional
def call(cmd) -> str:
sys.stdout.flush()
ret = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True)
return ret.stdout
-lint_rules = {}
+lint_rules: Dict[str, Tuple[Callable, str]] = {}
def lint_rule(description: str):
def f(func):
@@ -14,7 +15,7 @@ def lint_rule(description: str):
lint_rules[func.__name__] = (func, description)
return f
-def get_commit_range() -> str:
+def get_commit_range() -> Optional[str]:
if len(sys.argv) > 1:
return sys.argv[1]
# https://github.com/actions/runner/issues/342#issuecomment-590670059
@@ -28,6 +29,7 @@ def get_commit_range() -> str:
return event["before"] + "..." + event["after"]
elif event_name == "pull_request":
return event["pull_request"]["base"]["sha"] + ".." + event["pull_request"]["head"]["sha"]
+ return None
def do_lint(commit_range: str) -> bool:
commits = call(["git", "log", "--pretty=format:%h %s", commit_range]).splitlines()
@@ -56,7 +58,7 @@ def do_lint(commit_range: str) -> bool:
################################################################################
-NO_PREFIX_WHITELIST = r"^Revert \"(.*)\"|^Release [0-9]|^Update VERSION$"
+NO_PREFIX_WHITELIST = r"^Revert \"(.*)\"|^Reapply \"(.*)\"|^Release [0-9]|^Update VERSION$"
@lint_rule("Subject line must contain a prefix identifying the sub system")
def subsystem_prefix(body):
@@ -98,7 +100,7 @@ def no_merge(body):
@lint_rule("Subject line should be shorter than 72 characters")
def line_too_long(body):
- revert = re.search(r"^Revert \"(.*)\"", body[0])
+ revert = re.search(r"^Revert \"(.*)\"|^Reapply \"(.*)\"", body[0])
return True if revert else len(body[0]) <= 72
@lint_rule("Prefix should not include C file extensions (use `vo_gpu: ...` not `vo_gpu.c: ...`)")