Skip to content

Commit e17ca6c

Browse files
committed
fix(symlink): lost the old stack
1 parent 6929ea7 commit e17ca6c

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

scripts/storage.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,34 @@ def upload_list(stack_name, dist_dir):
4949

5050

5151
def symlink(stack_name, version):
52+
53+
def get_system_version(obj_key):
54+
_, system, system_version = obj_key.strip(".tar.gz").rsplit("-", 2)
55+
return f"{system}-{system_version}"
56+
5257
object_list = [
5358
obj.key for obj in bucket.list_objects(
5459
f"stacks/{stack_name}/{stack_name}-{version}.").object_list
5560
]
5661
prefix = f"stacks/{stack_name}/{stack_name}-"
57-
version_list = sorted(
58-
[obj.replace(prefix, "").split("-", 1)[0] for obj in object_list],
59-
key=parse,
60-
reverse=True,
61-
)
62+
# Build a map of system-version to object keys
63+
version_map = {}
64+
for obj in object_list:
65+
system = get_system_version(obj)
66+
if system not in version_map:
67+
version_map[system] = [obj]
68+
else:
69+
version_map[system].append(obj)
70+
for key, value in version_map.items():
71+
version_list = sorted(
72+
[obj.replace(prefix, "").split("-", 1)[0] for obj in value],
73+
key=parse,
74+
reverse=True,
75+
)
76+
version_map[key] = version_list
77+
6278
for obj in object_list:
79+
version_list = version_map[get_system_version(obj)]
6380
if obj.startswith(f"{prefix}{version_list[0]}-"):
6481
symlink = re.sub(r"%s.([0-9]\.?){1,}" % f"{prefix}{version}", f"{prefix}{version}", obj)
6582
bucket.put_symlink(obj, symlink)

0 commit comments

Comments
 (0)