Add an easy to use cross-platform install script for that classic curl | bash goodness

This commit is contained in:
David Dworken 2022-04-19 20:36:14 -07:00
parent 1528e9817e
commit 6c9236785a
3 changed files with 40 additions and 15 deletions

View File

@ -9,10 +9,7 @@
To install `hishtory` on your first machine:
```bash
curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64
# Optional: Verify the binarie's SLSA L3 attestations from https://api.hishtory.dev/download/hishtory-linux-amd64.intoto.jsonl
chmod +x hishtory
./hishtory install
curl https://hishtory.dev/install.py | python3 -
```
At this point, `hishtory` is already persisting your shell history. Give it a try with `hishtory query` and see below for more details on the advanced query features.
@ -20,10 +17,8 @@ At this point, `hishtory` is already persisting your shell history. Give it a tr
Then to install `hishtory` on your other computers, you need your secret key. Get this by running `hishtory status`. Once you have it, you follow similar steps to install hishtory on your other computers:
```bash
curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64
# Optional: Verify the binarie's SLSA L3 attestations from https://api.hishtory.dev/download/hishtory-linux-amd64.intoto.jsonl
chmod +x hishtory
./hishtory install $SECRET_KEY
curl https://hishtory.dev/install.py | python3 -
hishtory init $YOUR_HISHTORY_SECRET
```
Now if you run `hishtory query` on first computer, you can automatically see the commands you've run on all your other computers!

View File

@ -102,17 +102,14 @@
<div class="tab-pane active" id="install-first" role="tabpanel" aria-labelledby="home-tab">
<br>
To install hishtory on your first machine:<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64<br>
&nbsp;&nbsp;&nbsp;&nbsp;chmod +x hishtory<br>
&nbsp;&nbsp;&nbsp;&nbsp;./hishtory install</code>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl https://hishtory.dev/install | python3 -<br></code>
</div>
<div class="tab-pane" id="install-second" role="tabpanel" aria-labelledby="profile-tab">
<br>
To install hishtory on your second machine, you must first retrieve your secret key from first first machine. To do so, run
<code>hishtory status</code> and copy your "Secret Key". Then to install it on your second machine:<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64<br>
&nbsp;&nbsp;&nbsp;&nbsp;chmod +x hishtory<br>
&nbsp;&nbsp;&nbsp;&nbsp;./hishtory install $YOUR_HISHTORY_SECRET</code>
<code>hishtory status</code>&nbsp;and copy your "Secret Key". Then to install it on your second machine:<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl https://hishtory.dev/install | python3 -<br>
&nbsp;&nbsp;&nbsp;&nbsp;hishtory init $YOUR_HISHTORY_SECRET</code>
</div>
</div>
</div><br>

View File

@ -0,0 +1,33 @@
"""
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()}!\nIf 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()
with open('/tmp/hishtory-client', 'wb') as f:
f.write(hishtory_binary)
os.system('chmod +x /tmp/hishtory-client')
os.system('/tmp/hishtory-client install')
print('Succesfully installed hishtory! Try running a command and then running `hishtory query`.')