1919from typing import List
2020
2121from .__version__ import __version__
22- from .commitlint import check_commit_message , remove_comments
2322from .exceptions import CommitlintException
2423from .git_helpers import get_commit_message_of_hash , get_commit_messages_of_hash_range
25- from .messages import VALIDATION_SUCCESSFUL
24+ from .linter import lint_commit_message
25+ from .linter .utils import remove_comments
26+ from .messages import VALIDATION_FAILED , VALIDATION_SUCCESSFUL
2627
2728
2829def get_args () -> argparse .Namespace :
@@ -57,28 +58,45 @@ def get_args() -> argparse.Namespace:
5758 # --to-hash is optional
5859 parser .add_argument ("--to-hash" , type = str , help = "To commit hash" , default = "HEAD" )
5960
61+ # feature options
62+ parser .add_argument (
63+ "--skip-detail" ,
64+ action = "store_true" ,
65+ help = "Skip the detailed error message check" ,
66+ )
67+
6068 # parsing args
6169 args = parser .parse_args ()
6270
6371 return args
6472
6573
66- def _show_errors (commit_message : str , errors : List [str ]) -> None :
74+ def _show_errors (
75+ commit_message : str ,
76+ errors : List [str ],
77+ skip_detail : bool = False ,
78+ ) -> None :
6779 """
6880 Display a formatted error message for a list of errors.
6981
7082 Args:
83+ commit_message (str): The commit message to display.
7184 errors (List[str]): A list of error messages to be displayed.
85+ skip_detail (bool): Whether to skip the detailed error message.
86+
7287 """
7388 error_count = len (errors )
7489 commit_message = remove_comments (commit_message )
7590
76- sys .stderr .write (
77- f"⧗ Input:\n { commit_message } \n \n ✖ Found { error_count } error(s).\n \n "
78- )
79- for index , error in enumerate (errors ):
80- end_char = "" if index == error_count - 1 else "\n "
81- sys .stderr .write (f"- { error } \n { end_char } " )
91+ sys .stderr .write (f"⧗ Input:\n { commit_message } \n \n " )
92+
93+ if skip_detail :
94+ sys .stderr .write (f"{ VALIDATION_FAILED } \n " )
95+ return
96+
97+ sys .stderr .write (f"✖ Found { error_count } error(s).\n " )
98+ for error in errors :
99+ sys .stderr .write (f"- { error } \n " )
82100
83101
84102def _get_commit_message_from_file (filepath : str ) -> str :
@@ -101,41 +119,45 @@ def _get_commit_message_from_file(filepath: str) -> str:
101119 return commit_message
102120
103121
104- def _handle_commit_message (commit_message : str ) -> None :
122+ def _handle_commit_message (commit_message : str , skip_detail : bool ) -> None :
105123 """
106124 Handles a single commit message, checks its validity, and prints the result.
107125
108126 Args:
109127 commit_message (str): The commit message to be handled.
128+ skip_detail (bool): Whether to skip the detailed error linting.
110129
111130 Raises:
112131 SystemExit: If the commit message is invalid.
113132 """
114- success , errors = check_commit_message (commit_message )
133+ success , errors = lint_commit_message (commit_message , skip_detail = skip_detail )
115134
116135 if success :
117136 sys .stdout .write (f"{ VALIDATION_SUCCESSFUL } \n " )
118137 else :
119- _show_errors (commit_message , errors )
138+ _show_errors (commit_message , errors , skip_detail = skip_detail )
120139 sys .exit (1 )
121140
122141
123- def _handle_multiple_commit_messages (commit_messages : List [str ]) -> None :
142+ def _handle_multiple_commit_messages (
143+ commit_messages : List [str ], skip_detail : bool
144+ ) -> None :
124145 """
125146 Handles multiple commit messages, checks their validity, and prints the result.
126147
127148 Args:
128149 commit_messages (List[str]): List of commit messages to be handled.
150+ skip_detail (bool): Whether to skip the detailed error linting.
129151
130152 Raises:
131153 SystemExit: If any of the commit messages is invalid.
132154 """
133155 has_error = False
134156 for commit_message in commit_messages :
135- success , errors = check_commit_message (commit_message )
157+ success , errors = lint_commit_message (commit_message , skip_detail = skip_detail )
136158 if not success :
137159 has_error = True
138- _show_errors (commit_message , errors )
160+ _show_errors (commit_message , errors , skip_detail = skip_detail )
139161 sys .stderr .write ("\n " )
140162
141163 if has_error :
@@ -153,18 +175,20 @@ def main() -> None:
153175 try :
154176 if args .file :
155177 commit_message = _get_commit_message_from_file (args .file )
156- _handle_commit_message (commit_message )
178+ _handle_commit_message (commit_message , skip_detail = args . skip_detail )
157179 elif args .hash :
158180 commit_message = get_commit_message_of_hash (args .hash )
159- _handle_commit_message (commit_message )
181+ _handle_commit_message (commit_message , skip_detail = args . skip_detail )
160182 elif args .from_hash :
161183 commit_messages = get_commit_messages_of_hash_range (
162184 args .from_hash , args .to_hash
163185 )
164- _handle_multiple_commit_messages (commit_messages )
186+ _handle_multiple_commit_messages (
187+ commit_messages , skip_detail = args .skip_detail
188+ )
165189 else :
166190 commit_message = args .commit_message .strip ()
167- _handle_commit_message (commit_message )
191+ _handle_commit_message (commit_message , skip_detail = args . skip_detail )
168192 except CommitlintException as ex :
169193 sys .stderr .write (f"{ ex } \n " )
170194 sys .exit (1 )
0 commit comments