@@ -30,14 +30,17 @@ def compare_versions(v1: str, v2: str) -> int:
3030 v2 = v2 [1 :]
3131 v1 = v1 .split ('.' )
3232 v2 = v2 .split ('.' )
33- compare_count = max (len (v1 ), len (v2 )) if FLAG_COMPARE_EXACT_VERSION else 1
34- for i in range (compare_count ):
35- v1_i = int (v1 [i ]) if i < len (v1 ) else 0
36- v2_i = int (v2 [i ]) if i < len (v2 ) else 0
37- if v1_i > v2_i :
38- return 1
39- if v1_i < v2_i :
40- return - 1
33+ try :
34+ compare_count = max (len (v1 ), len (v2 )) if FLAG_COMPARE_EXACT_VERSION else 1
35+ for i in range (compare_count ):
36+ v1_i = int (v1 [i ]) if i < len (v1 ) else 0
37+ v2_i = int (v2 [i ]) if i < len (v2 ) else 0
38+ if v1_i > v2_i :
39+ return 1
40+ if v1_i < v2_i :
41+ return - 1
42+ except ValueError :
43+ logging .warning (f'Could not compare versions { v1 } and { v2 } ' )
4144 return 0
4245
4346
@@ -78,11 +81,16 @@ def check_for_updates(self, action_name: str) -> Optional[str]:
7881 return None
7982 repo_name , current_version = action_name .split ('@' )
8083 logging .debug (f'Checking for updates for { action_name } : Getting repo { repo_name } ' )
84+ if repo_name in self .actions_latest_release :
85+ latest_release = self .actions_latest_release [repo_name ]
86+ logging .debug (f"Found in cache { repo_name } : { latest_release } " )
87+ return latest_release if compare_versions (latest_release , current_version ) else None
8188 repo = self .client .get_repo (repo_name )
8289 logging .debug (f'Getting latest release for repository: { repo_name } ' )
8390 try :
8491 latest_release = repo .get_latest_release ()
8592 if compare_versions (latest_release .tag_name , current_version ):
93+ self .actions_latest_release [repo_name ] = latest_release .tag_name
8694 return latest_release .tag_name
8795 except UnknownObjectException :
8896 logging .warning (f'No releases found for repository: { repo_name } ' )
0 commit comments