@@ -150,9 +150,30 @@ def __call__(self) -> None:
150
150
tag_format = self ._ask_tag_format (tag ) # confirm & text
151
151
update_changelog_on_bump = self ._ask_update_changelog_on_bump () # confirm
152
152
major_version_zero = self ._ask_major_version_zero (version ) # confirm
153
+ hook_types : list [str ] | None = questionary .checkbox (
154
+ "What types of pre-commit hook you want to install? (Leave blank if you don't want to install)" ,
155
+ choices = [
156
+ questionary .Choice ("commit-msg" , checked = False ),
157
+ questionary .Choice ("pre-push" , checked = False ),
158
+ ],
159
+ ).unsafe_ask ()
153
160
except KeyboardInterrupt :
154
161
raise InitFailedError ("Stopped by user" )
155
162
163
+ if hook_types :
164
+ config_data = self ._get_config_data ()
165
+ with smart_open (
166
+ self ._PRE_COMMIT_CONFIG_PATH , "w" , encoding = self .encoding
167
+ ) as config_file :
168
+ yaml .safe_dump (config_data , stream = config_file )
169
+
170
+ if not self .project_info .is_pre_commit_installed :
171
+ raise InitFailedError (
172
+ "pre-commit is not installed in current environment."
173
+ )
174
+ self ._exec_install_pre_commit_hook (hook_types )
175
+ out .write ("commitizen pre-commit hook is now installed in your '.git'\n " )
176
+
156
177
# Initialize configuration
157
178
if "toml" in config_path :
158
179
self .config = TomlConfig (data = "" , path = config_path )
@@ -161,20 +182,6 @@ def __call__(self) -> None:
161
182
elif "yaml" in config_path :
162
183
self .config = YAMLConfig (data = "" , path = config_path )
163
184
164
- # Collect hook data
165
- hook_types = questionary .checkbox (
166
- "What types of pre-commit hook you want to install? (Leave blank if you don't want to install)" ,
167
- choices = [
168
- questionary .Choice ("commit-msg" , checked = False ),
169
- questionary .Choice ("pre-push" , checked = False ),
170
- ],
171
- ).unsafe_ask ()
172
- if hook_types :
173
- try :
174
- self ._install_pre_commit_hook (hook_types )
175
- except InitFailedError as e :
176
- raise InitFailedError (f"Failed to install pre-commit hook.\n { e } " )
177
-
178
185
# Create and initialize config
179
186
self .config .init_empty_config_content ()
180
187
@@ -369,17 +376,3 @@ def _get_config_data(self) -> dict[str, Any]:
369
376
else :
370
377
repos .append (CZ_HOOK_CONFIG )
371
378
return config_data
372
-
373
- def _install_pre_commit_hook (self , hook_types : list [str ] | None = None ) -> None :
374
- config_data = self ._get_config_data ()
375
- with smart_open (
376
- self ._PRE_COMMIT_CONFIG_PATH , "w" , encoding = self .encoding
377
- ) as config_file :
378
- yaml .safe_dump (config_data , stream = config_file )
379
-
380
- if not self .project_info .is_pre_commit_installed :
381
- raise InitFailedError ("pre-commit is not installed in current environment." )
382
- if hook_types is None :
383
- hook_types = ["commit-msg" , "pre-push" ]
384
- self ._exec_install_pre_commit_hook (hook_types )
385
- out .write ("commitizen pre-commit hook is now installed in your '.git'\n " )
0 commit comments