33import os
44import platform
55import zipfile
6+ import tarfile
67from pathlib import Path
78from typing import Union , Tuple , Optional
89
@@ -28,24 +29,31 @@ def _unzip_binary(self):
2829 arch = 'x64' # Assuming x64 architecture
2930
3031 if os_name == 'linux' :
31- zip_name = f"linux-{ arch } -{ __version__ } .zip"
32- binary_name = 'linux-64/redlines'
32+ zip_name = f"linux-{ arch } -{ __version__ } .tar.gz"
33+ binary_name = 'linux-x64/redlines'
34+ zip_path = os .path .join (binaries_path , zip_name )
35+ if not os .path .exists (zip_path ):
36+ with tarfile .open (zip_path , 'r:gz' ) as tar_ref :
37+ tar_ref .extractall (target_path )
3338
3439 elif os_name == 'windows' :
3540 zip_name = f"win-{ arch } -{ __version__ } .zip"
3641 binary_name = 'win-x64/redlines.exe'
42+ zip_path = os .path .join (binaries_path , zip_name )
43+ if not os .path .exists (zip_path ):
44+ with zipfile .ZipFile (zip_path , 'r' ) as zip_ref :
45+ zip_ref .extractall (target_path )
3746
38- else :
39- raise EnvironmentError ("Unsupported OS" )
40-
41- full_binary_path = os .path .join (target_path , binary_name )
42-
43- if not os .path .exists (full_binary_path ):
44-
47+ elif os_name == 'darwin' :
48+ zip_name = f"osx-{ arch } -{ __version__ } .tar.gz"
49+ binary_name = 'osx-x64/redlines'
4550 zip_path = os .path .join (binaries_path , zip_name )
51+ if not os .path .exists (zip_path ):
52+ with tarfile .open (zip_path , 'r:gz' ) as tar_ref :
53+ tar_ref .extractall (target_path )
4654
47- with zipfile . ZipFile ( zip_path , 'r' ) as zip_ref :
48- zip_ref . extractall ( target_path )
55+ else :
56+ raise EnvironmentError ( "Unsupported OS" )
4957
5058 return os .path .join (target_path , binary_name )
5159
0 commit comments