@@ -15,9 +15,9 @@ def __eq__(self, other):
15
15
16
16
class GitCommit (GitObject ):
17
17
def __init__ (self , rev , title , body = "" ):
18
- self .rev = rev
19
- self .title = title
20
- self .body = body
18
+ self .rev = rev . strip ()
19
+ self .title = title . strip ()
20
+ self .body = body . strip ()
21
21
22
22
@property
23
23
def message (self ):
@@ -28,9 +28,10 @@ def __repr__(self):
28
28
29
29
30
30
class GitTag (GitObject ):
31
- def __init__ (self , name , rev ):
32
- self .name = name
33
- self .rev = rev
31
+ def __init__ (self , name , rev , date ):
32
+ self .rev = rev .strip ()
33
+ self .name = name .strip ()
34
+ self .date = date .strip ()
34
35
35
36
def __repr__ (self ):
36
37
return f"{ self .name } ({ self .rev } )"
@@ -85,19 +86,34 @@ def get_commits(
85
86
return git_commits
86
87
87
88
89
+ def get_tags (dateformat : str = "%Y-%m-%d" ) -> List [GitTag ]:
90
+ inner_delimiter = "---inner_delimiter---"
91
+ formatter = (
92
+ f"'%(refname:lstrip=2){ inner_delimiter } "
93
+ f"%(objectname){ inner_delimiter } "
94
+ f"%(committerdate:format:{ dateformat } )'"
95
+ )
96
+ c = cmd .run (f"git tag --format={ formatter } --sort=-committerdate" )
97
+ if c .err or not c .out :
98
+ return []
99
+
100
+ git_tags = [GitTag (* line .split (inner_delimiter )) for line in c .out .split ("\n " )[:- 1 ]]
101
+ return git_tags
102
+
103
+
88
104
def tag_exist (tag : str ) -> bool :
89
105
c = cmd .run (f"git tag --list { tag } " )
90
106
return tag in c .out
91
107
92
108
93
- def get_latest_tag () -> Optional [str ]:
109
+ def get_latest_tag_name () -> Optional [str ]:
94
110
c = cmd .run ("git describe --abbrev=0 --tags" )
95
111
if c .err :
96
112
return None
97
113
return c .out .strip ()
98
114
99
115
100
- def get_all_tags () -> Optional [List [str ]]:
116
+ def get_tag_names () -> Optional [List [str ]]:
101
117
c = cmd .run ("git tag --list" )
102
118
if c .err :
103
119
return []
@@ -111,24 +127,6 @@ def find_git_project_root() -> Optional[Path]:
111
127
return None
112
128
113
129
114
- def get_tags_with_rev () -> List [GitTag ]:
115
- tag_delimiter = "---tag-delimiter---"
116
- c = cmd .run (
117
- (
118
- f"git tag --format='%(refname:lstrip=2){ tag_delimiter } %(objectname)'"
119
- " --sort=-committerdate"
120
- )
121
- )
122
- if c .err or not c .out :
123
- return []
124
-
125
- git_tags = []
126
- for line in c .out .split ("\n " )[:- 1 ]:
127
- name , rev = line .split (tag_delimiter )
128
- git_tags .append (GitTag (name .strip (), rev .strip ()))
129
- return git_tags
130
-
131
-
132
130
def is_staging_clean () -> bool :
133
131
"""Check if staing is clean"""
134
132
c = cmd .run ("git diff --no-ext-diff --name-only" )
0 commit comments