File tree 1 file changed +41
-0
lines changed
1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+ from typing import TYPE_CHECKING
5
+
6
+ import tomlkit
7
+
8
+ from commitizen .providers .base_provider import TomlProvider
9
+
10
+ if TYPE_CHECKING :
11
+ import tomlkit .items
12
+
13
+
14
+ class UvProvider (TomlProvider ):
15
+ """
16
+ uv.lock and pyproject.tom version management
17
+ """
18
+
19
+ filename = "pyproject.toml"
20
+ lock_filename = "uv.lock"
21
+
22
+ @property
23
+ def lock_file (self ) -> Path :
24
+ return Path () / self .lock_filename
25
+
26
+ def set_version (self , version : str ) -> None :
27
+ super ().set_version (version )
28
+ self .set_lock_version (version )
29
+
30
+ def set_lock_version (self , version : str ) -> None :
31
+ pyproject_toml_content = tomlkit .parse (self .file .read_text ())
32
+ project_name = pyproject_toml_content ["project" ]["name" ] # type: ignore[index]
33
+
34
+ document = tomlkit .parse (self .lock_file .read_text ())
35
+
36
+ packages : tomlkit .items .AoT = document ["package" ] # type: ignore[assignment]
37
+ for i , package in enumerate (packages ):
38
+ if package ["name" ] == project_name :
39
+ document ["package" ][i ]["version" ] = version # type: ignore[index]
40
+ break
41
+ self .lock_file .write_text (tomlkit .dumps (document ))
You can’t perform that action at this time.
0 commit comments