File tree Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ #!/usr/bin/env python3
2
+ import subprocess
3
+ import pathlib
4
+ import re
5
+ import sys
6
+
7
+ PACKAGE_FILE = pathlib .Path ("socketsecurity/__init__.py" )
8
+ VERSION_PATTERN = re .compile (r"__version__\s*=\s*['\"]([^'\"]+)['\"]" )
9
+
10
+ def get_hatch_version ():
11
+ return subprocess .check_output (["hatch" , "version" ], text = True ).strip ()
12
+
13
+ def get_current_version ():
14
+ content = PACKAGE_FILE .read_text ()
15
+ match = VERSION_PATTERN .search (content )
16
+ return match .group (1 ) if match else None
17
+
18
+ def update_version (new_version ):
19
+ content = PACKAGE_FILE .read_text ()
20
+ new_content = VERSION_PATTERN .sub (f"__version__ = '{ new_version } '" , content )
21
+ PACKAGE_FILE .write_text (new_content )
22
+
23
+ def main ():
24
+ hatch_version = get_hatch_version ()
25
+ current_version = get_current_version ()
26
+
27
+ if not current_version :
28
+ print ("❌ Couldn't find __version__ in" , PACKAGE_FILE )
29
+ return 1
30
+
31
+ if hatch_version != current_version :
32
+ print (f"🔁 Syncing version: { current_version } → { hatch_version } " )
33
+ update_version (hatch_version )
34
+ return 1 # Exit 1 so pre-commit fails and shows diff
35
+
36
+ print (f"✅ Version is in sync: { hatch_version } " )
37
+ return 0
38
+
39
+ if __name__ == "__main__" :
40
+ sys .exit (main ())
Original file line number Diff line number Diff line change
1
+ repos :
2
+ - repo : local
3
+ hooks :
4
+ - id : sync-version
5
+ name : Sync __version__ with hatch version
6
+ entry : python .hooks/sync_version.py
7
+ language : system
8
+ types : [python]
9
+ files : ^socketsecurity/__init__.py$
You can’t perform that action at this time.
0 commit comments