Pipeline Release: Use Add-On Bundle to Update Add-Ons #269
58
scripts/pipeline-release/package_release.py
Executable file
58
scripts/pipeline-release/package_release.py
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import hashlib
|
||||
import subprocess
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
name = "blender_studio_pipeline_release"
|
||||
zipped_release, checksum_file = get_pipeline_release(name)
|
||||
# TODO Upload zipped release to blender studio pipeline website
|
||||
|
||||
|
||||
def get_pipeline_release(name: str):
|
||||
temp_dir = Path(tempfile.mkdtemp(prefix=name + "_"))
|
||||
output_dir = Path(temp_dir).joinpath(name)
|
||||
output_dir.mkdir()
|
||||
|
||||
cmd_list = ("./package_local.py", str(output_dir))
|
||||
process = subprocess.Popen(cmd_list, shell=False)
|
||||
if process.wait() != 0:
|
||||
print("Add-On Package Locally Failed!")
|
||||
sys.exit(0)
|
||||
|
||||
zipped_release = shutil.make_archive(
|
||||
temp_dir.joinpath(name),
|
||||
'zip',
|
||||
temp_dir,
|
||||
name,
|
||||
)
|
||||
checksum = generate_checksum(zipped_release)
|
||||
chechsum_name = name + ".zip.sha256"
|
||||
checksum_path = temp_dir / chechsum_name
|
||||
checksum_file = write_file(
|
||||
checksum_path,
|
||||
f"{checksum} {name}.zip",
|
||||
)
|
||||
return zipped_release, checksum_file
|
||||
|
||||
|
||||
def write_file(file_path, content):
|
||||
file = open(file_path, 'w')
|
||||
file.writelines(content)
|
||||
file.close()
|
||||
|
||||
|
||||
def generate_checksum(archive_path):
|
||||
with open(archive_path, 'rb') as file:
|
||||
digest = hashlib.file_digest(file, "sha256")
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user