2022-04-20 05:36:14 +02:00
"""
A small install script to download the correct hishtory binary for the current OS / architecture .
The hishtory binary is in charge of installing itself , this just downloads the correct binary and
executes it .
"""
import json
import urllib . request
import platform
import sys
import os
with urllib . request . urlopen ( ' https://api.hishtory.dev/api/v1/download ' ) as response :
resp_body = response . read ( )
download_options = json . loads ( resp_body )
if platform . system ( ) == ' Linux ' :
download_url = download_options [ ' linux_amd_64_url ' ]
elif platform . system ( ) == ' Darwin ' and platform . machine ( ) == ' arm64 ' :
download_url = download_options [ ' darwin_arm_64_url ' ]
elif platform . system ( ) == ' Darwin ' and platform . machine ( ) == ' x86_64 ' :
download_url = download_options [ ' darwin_amd_64_url ' ]
else :
print ( f " No hishtory binary for system= { platform . system ( ) } , machine= { platform . machine ( ) } ! \n If you believe this is a mistake, please open an issue here: https://github.com/ddworken/hishtory/issues " )
sys . exit ( 1 )
with urllib . request . urlopen ( download_url ) as response :
hishtory_binary = response . read ( )
2022-09-22 04:01:34 +02:00
if os . path . exists ( ' /tmp/hishtory-client ' ) :
os . remove ( ' /tmp/hishtory-client ' )
2022-04-20 05:36:14 +02:00
with open ( ' /tmp/hishtory-client ' , ' wb ' ) as f :
f . write ( hishtory_binary )
os . system ( ' chmod +x /tmp/hishtory-client ' )
2022-06-05 07:09:30 +02:00
exitCode = os . system ( ' /tmp/hishtory-client install ' )
if exitCode != 0 :
raise Exception ( " failed to install downloaded hishtory client via `/tmp/hishtory-client install`! " )
2022-04-20 07:22:04 +02:00
print ( ' Succesfully installed hishtory! Open a new terminal, try running a command, and then running `hishtory query`. ' )