1
1
import os
2
2
import re
3
+ from typing import Optional
3
4
4
5
from commitizen import defaults
5
6
from commitizen .cz .base import BaseCommitizen
6
7
from commitizen .cz .utils import multiple_line_breaker , required_validator
7
8
from commitizen .defaults import Questions
9
+ from commitizen .exceptions import CommitMessageLineLengthExceededError
8
10
9
11
__all__ = ["ConventionalCommitsCz" ]
10
12
@@ -150,7 +152,7 @@ def questions(self) -> Questions:
150
152
]
151
153
return questions
152
154
153
- def message (self , answers : dict ) -> str :
155
+ def message (self , answers : dict , check_length : Optional [ bool ] = False ) -> str :
154
156
prefix = answers ["prefix" ]
155
157
scope = answers ["scope" ]
156
158
subject = answers ["subject" ]
@@ -167,7 +169,15 @@ def message(self, answers: dict) -> str:
167
169
if footer :
168
170
footer = f"\n \n { footer } "
169
171
170
- message = f"{ prefix } { scope } : { subject } { body } { footer } "
172
+ message = f"{ prefix } { scope } : { subject } "
173
+ message_len = len (message )
174
+ MESSAGE_LEN_LIMIT = 72
175
+ if check_length and message_len > MESSAGE_LEN_LIMIT :
176
+ raise CommitMessageLineLengthExceededError (
177
+ f"Length of commit message exceeded limit ({ message_len } /{ MESSAGE_LEN_LIMIT } )"
178
+ )
179
+
180
+ message = f"{ message } { body } { footer } "
171
181
172
182
return message
173
183
0 commit comments