Skip to content

Commit 14e6a9b

Browse files
committed
Avoid listing org packages where repo token doesn't have access
1 parent 86e8acf commit 14e6a9b

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

clean_ghcr.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ def get_req(path, params=None):
3636
params = {}
3737
response = requests.get(get_url(path), headers=get_base_headers(), params=params)
3838
if not response.ok:
39+
if response.status_code == 404:
40+
return None
3941
raise Exception(response.text)
4042
return response.json()
4143

@@ -49,7 +51,9 @@ def get_list_req(path, params=None):
4951
another_page = True
5052
result = []
5153
while another_page:
52-
result.extend(get_req(path, params=params))
54+
response = get_req(path, params=params)
55+
if response is not None:
56+
result.extend(response)
5357
if "next" in response.links:
5458
url = response.links["next"]["url"]
5559
if "page" in params:
@@ -60,17 +64,20 @@ def get_list_req(path, params=None):
6064

6165

6266
def get_list_packages(owner, repo_name, owner_type, package_name):
63-
all_org_pkg = get_list_req(
67+
if package_name:
68+
response = get_req(f"/{owner_type}s/{owner}/packages/container/{package_name}")
69+
result = []
70+
if response is not None:
71+
result.extend(response)
72+
return result
73+
74+
all_org_pkg = get_req(
6475
f"/{owner_type}s/{owner}/packages?package_type=container")
6576
if repo_name:
6677
all_org_pkg = [
6778
pkg for pkg in all_org_pkg if pkg.get("repository")
6879
and pkg["repository"]["name"].lower() == repo_name
6980
]
70-
if package_name:
71-
all_org_pkg = [
72-
pkg for pkg in all_org_pkg if pkg["name"] == package_name
73-
]
7481
return all_org_pkg
7582

7683

0 commit comments

Comments
 (0)