diff --git a/pendora-box.py b/pendora-box.py index 676c3b0..f1f2915 100644 --- a/pendora-box.py +++ b/pendora-box.py @@ -9,6 +9,7 @@ import subprocess from io import BytesIO import zipfile import rpmfile +import gzip def compute_file_hash(filepath): @@ -53,6 +54,9 @@ def extract_bin(archtype, binpath, destpath, content): with open(destpath, 'wb') as f: f.write(fd.read()) + elif archtype == 'gz': + with open(destpath, 'wb') as f: + f.write(gzip.decompress(content)) ioobj.close() @@ -87,14 +91,27 @@ def githubreleasesync(reponame, repoinfo, credz): filenames = repoinfo['files'] for filename in filenames: - localfile = pathlib.Path('files').joinpath(pathlib.Path(filename).name) + if isinstance(filename, dict): + binpath = filename['binpath'] + filename = filename['filename'] + localfile = pathlib.Path('files').joinpath(pathlib.Path(binpath).name) + if filename.endswith('.gz'): + is_gz = True + print(f" * {localfile} ", end='') + + else: + localfile = pathlib.Path('files').joinpath(pathlib.Path(filename).name) + print(f" * {localfile} ", end='') + urldl = f'https://github.com/{reponame}/releases/download/{last_version}/{filename}' - print(f" * {localfile} ", end='') if not localfile.exists(): content = requests.get(urldl, auth=credz).content - with open(localfile, 'wb') as f: - f.write(content) + if is_gz: + extract_bin('gz', binpath, localfile, content) + else: + with open(localfile, 'wb') as f: + f.write(content) print('-> Installed! ;)') else: @@ -103,8 +120,11 @@ def githubreleasesync(reponame, repoinfo, credz): else: content = requests.get(urldl, auth=credz).content - with open(localfile, 'wb') as f: - f.write(content) + if is_gz: + extract_bin('gz', binpath, localfile, content) + else: + with open(localfile, 'wb') as f: + f.write(content) print('-> Updated!') with open("config.json", "r") as jsonfile: