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,43 @@ 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+ "--quick" , action = "store_true" , help = "Check the commit message quickly."
64+ )
65+
6066 # parsing args
6167 args = parser .parse_args ()
6268
6369 return args
6470
6571
66- def _show_errors (commit_message : str , errors : List [str ]) -> None :
72+ def _show_errors (
73+ commit_message : str ,
74+ errors : List [str ],
75+ short : bool = False ,
76+ ) -> None :
6777 """
6878 Display a formatted error message for a list of errors.
6979
7080 Args:
81+ commit_message (str): The commit message to display.
7182 errors (List[str]): A list of error messages to be displayed.
83+ short (bool): Display the error message in short.
84+
7285 """
7386 error_count = len (errors )
7487 commit_message = remove_comments (commit_message )
7588
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 } " )
89+ sys .stderr .write (f"⧗ Input:\n { commit_message } \n \n " )
90+
91+ if short :
92+ sys .stderr .write (f"{ VALIDATION_FAILED } \n " )
93+ return
94+
95+ sys .stderr .write (f"✖ Found { error_count } error(s).\n " )
96+ for error in errors :
97+ sys .stderr .write (f"- { error } \n " )
8298
8399
84100def _get_commit_message_from_file (filepath : str ) -> str :
@@ -101,26 +117,27 @@ def _get_commit_message_from_file(filepath: str) -> str:
101117 return commit_message
102118
103119
104- def _handle_commit_message (commit_message : str ) -> None :
120+ def _handle_commit_message (commit_message : str , quick : bool ) -> None :
105121 """
106122 Handles a single commit message, checks its validity, and prints the result.
107123
108124 Args:
109125 commit_message (str): The commit message to be handled.
126+ quick (bool): True for quick linting.
110127
111128 Raises:
112129 SystemExit: If the commit message is invalid.
113130 """
114- success , errors = check_commit_message (commit_message )
131+ success , errors = lint_commit_message (commit_message , quick = quick )
115132
116133 if success :
117134 sys .stdout .write (f"{ VALIDATION_SUCCESSFUL } \n " )
118135 else :
119- _show_errors (commit_message , errors )
136+ _show_errors (commit_message , errors , short = quick )
120137 sys .exit (1 )
121138
122139
123- def _handle_multiple_commit_messages (commit_messages : List [str ]) -> None :
140+ def _handle_multiple_commit_messages (commit_messages : List [str ], quick : bool ) -> None :
124141 """
125142 Handles multiple commit messages, checks their validity, and prints the result.
126143
@@ -132,10 +149,10 @@ def _handle_multiple_commit_messages(commit_messages: List[str]) -> None:
132149 """
133150 has_error = False
134151 for commit_message in commit_messages :
135- success , errors = check_commit_message (commit_message )
152+ success , errors = lint_commit_message (commit_message , quick = quick )
136153 if not success :
137154 has_error = True
138- _show_errors (commit_message , errors )
155+ _show_errors (commit_message , errors , short = quick )
139156 sys .stderr .write ("\n " )
140157
141158 if has_error :
@@ -153,18 +170,18 @@ def main() -> None:
153170 try :
154171 if args .file :
155172 commit_message = _get_commit_message_from_file (args .file )
156- _handle_commit_message (commit_message )
173+ _handle_commit_message (commit_message , quick = args . quick )
157174 elif args .hash :
158175 commit_message = get_commit_message_of_hash (args .hash )
159- _handle_commit_message (commit_message )
176+ _handle_commit_message (commit_message , quick = args . quick )
160177 elif args .from_hash :
161178 commit_messages = get_commit_messages_of_hash_range (
162179 args .from_hash , args .to_hash
163180 )
164- _handle_multiple_commit_messages (commit_messages )
181+ _handle_multiple_commit_messages (commit_messages , quick = args . quick )
165182 else :
166183 commit_message = args .commit_message .strip ()
167- _handle_commit_message (commit_message )
184+ _handle_commit_message (commit_message , quick = args . quick )
168185 except CommitlintException as ex :
169186 sys .stderr .write (f"{ ex } \n " )
170187 sys .exit (1 )
0 commit comments