Skip to content

Commit 5149307

Browse files
committed
fix:uv
1 parent 496b48c commit 5149307

5 files changed

Lines changed: 1419 additions & 1896 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## v1.2.3
2+
3+
- Migrate to uv
4+
5+
### 🐛 Bug Fixes
6+
7+
- fix: Comparison can be timezone aware
8+
19
## v1.2.2
210

311
### 🐛 Bug Fixes

gha_cli/cli.py

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ def _is_sha(current_version: str) -> bool:
2828

2929
class GithubActionsTools(object):
3030
_wf_cache: dict[str, dict[str, Any]] = dict() # repo_name -> [path -> workflow/yaml]
31-
__actions_latest_release: dict[str, Tuple[str, datetime]] = dict() # action_name@current_release -> latest_release_tag
31+
__actions_latest_release: dict[str, Tuple[str, datetime]] = (
32+
dict()
33+
) # action_name@current_release -> latest_release_tag
3234

3335
def __init__(self, github_token: str, update_major_version_only: bool = False):
3436
self.client = Github(login_or_token=github_token)
@@ -73,7 +75,7 @@ def _compare_versions(self, orig_v1: str, orig_v2: str) -> int:
7375

7476
def get_action_latest_release(self, uses_tag_value: str) -> Optional[str]:
7577
"""Check whether an action has an update, and return the latest version if it does syntax for uses:
76-
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iduses
78+
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iduses
7779
"""
7880
if "@" not in uses_tag_value:
7981
return None
@@ -82,7 +84,9 @@ def get_action_latest_release(self, uses_tag_value: str) -> Optional[str]:
8284
latest_release = self.__actions_latest_release[action_name]
8385
logging.debug(f"Found in cache {action_name}: {latest_release}")
8486
if _is_sha(current_version):
85-
logging.debug(f"Current version for {action_name} is a SHA: {current_version}, checking whether latest release is newer")
87+
logging.debug(
88+
f"Current version for {action_name} is a SHA: {current_version}, checking whether latest release is newer"
89+
)
8690
now = datetime.now(timezone.utc)
8791
release_time = latest_release[1]
8892
if release_time.tzinfo is None:
@@ -94,7 +98,7 @@ def get_action_latest_release(self, uses_tag_value: str) -> Optional[str]:
9498
logging.debug(f"Checking for updates for {action_name}@{current_version}: Getting repo {action_name}")
9599
try:
96100
repo: Repository = self._get_repo(action_name)
97-
except ValueError as e:
101+
except ValueError:
98102
return None
99103
logging.info(f"Getting latest release for repository: {action_name}")
100104
latest_release: GitRelease
@@ -108,13 +112,20 @@ def get_action_latest_release(self, uses_tag_value: str) -> Optional[str]:
108112

109113
if _is_sha(current_version):
110114
logging.debug(
111-
f"Current version for {action_name} is a SHA: {current_version}, checking whether latest release is newer")
115+
f"Current version for {action_name} is a SHA: {current_version}, checking whether latest release is newer"
116+
)
112117
current_version_commit = repo.get_commit(current_version)
113118
if latest_release.last_modified_datetime > current_version_commit.last_modified_datetime:
114-
self.__actions_latest_release[action_name] = self._fix_version(latest_release.tag_name), latest_release.last_modified_datetime
119+
self.__actions_latest_release[action_name] = (
120+
self._fix_version(latest_release.tag_name),
121+
latest_release.last_modified_datetime,
122+
)
115123
return latest_release.tag_name
116124
if self._compare_versions(latest_release.tag_name, current_version) > 0:
117-
self.__actions_latest_release[action_name] = self._fix_version(latest_release.tag_name), latest_release.last_modified_datetime
125+
self.__actions_latest_release[action_name] = (
126+
self._fix_version(latest_release.tag_name),
127+
latest_release.last_modified_datetime,
128+
)
118129
return latest_release.tag_name
119130
return None
120131

@@ -140,13 +151,13 @@ def get_workflow_action_names(self, repo_name: str, workflow_path: str) -> Set[s
140151

141152
def get_repo_actions_latest(self, repo_name: str) -> Dict[str, List[ActionVersion]]:
142153
workflow_paths = self._get_github_workflow_filenames(repo_name)
143-
res:Dict[str, List[ActionVersion]] = dict()
144-
actions_per_path:Dict[str,Set[str]]=dict() # actions without version, e.g., actions/checkout
154+
res: Dict[str, List[ActionVersion]] = dict()
155+
actions_per_path: Dict[str, Set[str]] = dict() # actions without version, e.g., actions/checkout
145156
for path in workflow_paths:
146157
res[path] = list()
147158
actions = self.get_workflow_action_names(repo_name, path)
148159
for action in actions:
149-
actions_per_path.setdefault(path,set()).add(action)
160+
actions_per_path.setdefault(path, set()).add(action)
150161
all_actions_no_version = set()
151162
for path, actions in actions_per_path.items():
152163
for action in actions:
@@ -176,11 +187,11 @@ def get_repo_workflow_names(self, repo_name: str) -> Dict[str, str]:
176187
return res
177188

178189
def update_actions(
179-
self,
180-
repo_name: str,
181-
workflow_path: str,
182-
updates: List[ActionVersion],
183-
commit_msg: str,
190+
self,
191+
repo_name: str,
192+
workflow_path: str,
193+
updates: List[ActionVersion],
194+
commit_msg: str,
184195
) -> None:
185196
workflow_content = self._get_workflow_file_content(repo_name, workflow_path)
186197
if isinstance(workflow_content, bytes):

0 commit comments

Comments
 (0)