Support extract bin from gz. (github releases)
This commit is contained in:
parent
36c46920ec
commit
78bebf19d5
@ -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,12 +91,25 @@ def githubreleasesync(reponame, repoinfo, credz):
|
||||
filenames = repoinfo['files']
|
||||
|
||||
for filename in filenames:
|
||||
localfile = pathlib.Path('files').joinpath(pathlib.Path(filename).name)
|
||||
urldl = f'https://github.com/{reponame}/releases/download/{last_version}/{filename}'
|
||||
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}'
|
||||
|
||||
if not localfile.exists():
|
||||
content = requests.get(urldl, auth=credz).content
|
||||
if is_gz:
|
||||
extract_bin('gz', binpath, localfile, content)
|
||||
else:
|
||||
with open(localfile, 'wb') as f:
|
||||
f.write(content)
|
||||
|
||||
@ -103,6 +120,9 @@ def githubreleasesync(reponame, repoinfo, credz):
|
||||
|
||||
else:
|
||||
content = requests.get(urldl, auth=credz).content
|
||||
if is_gz:
|
||||
extract_bin('gz', binpath, localfile, content)
|
||||
else:
|
||||
with open(localfile, 'wb') as f:
|
||||
f.write(content)
|
||||
print('-> Updated!')
|
||||
|
Loading…
Reference in New Issue
Block a user