Support extract bin from gz. (github releases)
This commit is contained in:
		@@ -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:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user