14
14
if TYPE_CHECKING : # pragma: no-coverage
15
15
from bumpversion .config import Config
16
16
17
- from bumpversion .exceptions import DirtyWorkingDirectoryError , SignedTagsError
17
+ from bumpversion .exceptions import BumpVersionError , DirtyWorkingDirectoryError , SignedTagsError
18
18
19
19
logger = get_indented_logger (__name__ )
20
20
@@ -54,6 +54,12 @@ class SourceCodeManager:
54
54
def commit (cls , message : str , current_version : str , new_version : str , extra_args : Optional [list ] = None ) -> None :
55
55
"""Commit the changes."""
56
56
extra_args = extra_args or []
57
+ if not current_version :
58
+ logger .warning ("No current version given, using an empty string." )
59
+ current_version = ""
60
+ if not new_version :
61
+ logger .warning ("No new version given, using an empty string." )
62
+ new_version = ""
57
63
58
64
with NamedTemporaryFile ("wb" , delete = False ) as f :
59
65
f .write (message .encode ("utf-8" ))
@@ -66,10 +72,13 @@ def commit(cls, message: str, current_version: str, new_version: str, extra_args
66
72
try :
67
73
cmd = [* cls ._COMMIT_COMMAND , f .name , * extra_args ]
68
74
subprocess .run (cmd , env = env , capture_output = True , check = True ) # noqa: S603
69
- except subprocess .CalledProcessError as exc : # pragma: no-coverage
70
- err_msg = f"Failed to run { exc .cmd } : return code { exc .returncode } , output: { exc .output } "
75
+ except (subprocess .CalledProcessError , TypeError ) as exc : # pragma: no-coverage
76
+ if isinstance (exc , TypeError ):
77
+ err_msg = f"Failed to run { cls ._COMMIT_COMMAND } : { exc } "
78
+ else :
79
+ err_msg = f"Failed to run { exc .cmd } : return code { exc .returncode } , output: { exc .output } "
71
80
logger .exception (err_msg )
72
- raise exc
81
+ raise BumpVersionError ( err_msg ) from exc
73
82
finally :
74
83
os .unlink (f .name )
75
84
0 commit comments