-
Notifications
You must be signed in to change notification settings - Fork 0
/
release.py
34 lines (26 loc) · 1.13 KB
/
release.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"""
Script that creates all the artifacts for the GitHub release.
"""
import os
import zipfile
from tests.pre_build import ZIP_ARTIFACTS
def main():
"""Creates all the artifacts for the GitHub release."""
create_zip_artifacts(artifacts=ZIP_ARTIFACTS)
def create_zip_artifacts(*, artifacts: list[dict]):
"""Create zip artifacts for the GitHub release."""
for artifact in artifacts:
with zipfile.ZipFile(artifact["name"], "w", compression=zipfile.ZIP_DEFLATED) as zip_file:
for path in artifact["paths"]:
root_name = os.path.basename(path)
if root_name == "*":
path = os.path.dirname(path)
for root, _, files in os.walk(path):
for file in files:
filename = os.path.join(root, file)
rel_filename = os.path.relpath(filename, start=path)
if root_name != "*":
rel_filename = os.path.join(root_name, rel_filename)
zip_file.write(filename=filename, arcname=rel_filename)
if __name__ == "__main__":
main()