Pre release polishing (#42)
* Improve readme * Add demo gif * Update readme * Add mac build * Amend release config * Update gif
This commit is contained in:
parent
646fec893e
commit
0610ae197f
10 changed files with 236 additions and 15 deletions
40
.github/workflows/rust.yml
vendored
40
.github/workflows/rust.yml
vendored
|
@ -23,8 +23,17 @@ jobs:
|
|||
override: true
|
||||
|
||||
- name: Run cargo build
|
||||
run: cargo build
|
||||
|
||||
run: cargo build --all --release && strip target/release/atuin && mv target/release/atuin target/release/atuin_linux
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: |
|
||||
target/release/atuin_linux
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
@ -71,3 +80,30 @@ jobs:
|
|||
|
||||
- name: Format
|
||||
run: cargo fmt -- --check
|
||||
|
||||
build-mac:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install latest rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: x86_64-apple-darwin
|
||||
default: true
|
||||
override: true
|
||||
|
||||
- name: Build for mac
|
||||
run: cargo build --all --release && strip target/release/atuin && mv target/release/atuin target/release/atuin_darwin
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: |
|
||||
target/release/atuin_darwin
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -82,7 +82,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "atuin"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"atuin-client",
|
||||
|
@ -114,7 +114,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "atuin-client"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"atuin-common",
|
||||
|
@ -148,7 +148,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "atuin-common"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"eyre",
|
||||
|
@ -164,7 +164,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "atuin-server"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"atuin-common",
|
||||
|
|
20
Cargo.toml
20
Cargo.toml
|
@ -1,12 +1,29 @@
|
|||
[package]
|
||||
name = "atuin"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
authors = ["Ellie Huxtable <ellie@elliehuxtable.com>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
description = "atuin - magical shell history"
|
||||
homepage = "https://atuin.sh"
|
||||
repository = "https://github.com/ellie/atuin"
|
||||
readme = "README.md"
|
||||
|
||||
[package.metadata.deb]
|
||||
maintainer = "Ellie Huxtable <ellie@elliehuxtable.com>"
|
||||
copyright = "2021, Ellie Huxtable <ellie@elliehuxtable.com>"
|
||||
license-file = ["LICENSE"]
|
||||
depends = "$auto"
|
||||
section = "utility"
|
||||
|
||||
[package.metadata.rpm]
|
||||
package = "atuin"
|
||||
|
||||
[package.metadata.rpm.cargo]
|
||||
buildflags = ["--release"]
|
||||
|
||||
[package.metadata.rpm.targets]
|
||||
atuin = { path = "/usr/bin/atuin" }
|
||||
|
||||
[workspace]
|
||||
members = ["./atuin-client", "./atuin-server", "./atuin-common"]
|
||||
|
@ -39,4 +56,3 @@ base64 = "0.13.0"
|
|||
humantime = "2.1.0"
|
||||
tabwriter = "1.2.1"
|
||||
crossbeam-channel = "0.5.1"
|
||||
|
||||
|
|
12
README.md
12
README.md
|
@ -12,9 +12,17 @@
|
|||
<a href="https://crates.io/crates/atuin"><img src="https://img.shields.io/crates/d/atuin.svg?style=flat-square" /></a>
|
||||
<a href="https://github.com/ellie/atuin/blob/main/LICENSE"><img src="https://img.shields.io/crates/l/atuin.svg?style=flat-square" /></a>
|
||||
</p>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img src="demo.gif" alt="animated" width="80%" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<em>exit code, duration, time and command shown</em>
|
||||
</p>
|
||||
|
||||
- store shell history in a sqlite database
|
||||
- backup shell history to the cloud
|
||||
- backup encrypted shell history to the cloud
|
||||
- the same history across terminals, across session, and across machines
|
||||
- log exit code, cwd, hostname, session, command duration, etc
|
||||
- smart interactive history search to replace ctrl-r
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "atuin-client"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
authors = ["Ellie Huxtable <ellie@elliehuxtable.com>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
|
|
|
@ -274,8 +274,12 @@ impl Database for Sqlite {
|
|||
|
||||
let res = sqlx::query(
|
||||
format!(
|
||||
"select * from history
|
||||
"select * from history h
|
||||
where command like ?1 || '%'
|
||||
and timestamp = (
|
||||
select max(timestamp) from history
|
||||
where h.command = history.command
|
||||
)
|
||||
order by timestamp desc {}",
|
||||
limit.clone()
|
||||
)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "atuin-common"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
authors = ["Ellie Huxtable <ellie@elliehuxtable.com>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "atuin-server"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
authors = ["Ellie Huxtable <ellie@elliehuxtable.com>"]
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
|
|
BIN
demo.gif
Normal file
BIN
demo.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 458 KiB |
159
install.sh
Normal file → Executable file
159
install.sh
Normal file → Executable file
|
@ -1 +1,158 @@
|
|||
#!/
|
||||
#! /usr/bin/env sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cat << EOF
|
||||
_______ _______ __ __ ___ __ _
|
||||
| _ || || | | || | | | | |
|
||||
| |_| ||_ _|| | | || | | |_| |
|
||||
| | | | | |_| || | | |
|
||||
| | | | | || | | _ |
|
||||
| _ | | | | || | | | | |
|
||||
|__| |__| |___| |_______||___| |_| |__|
|
||||
|
||||
Magical shell history
|
||||
|
||||
Atuin setup
|
||||
https://github.com/ellie/atuin
|
||||
|
||||
Please file an issue if you encounter any problems!
|
||||
|
||||
===============================================================================
|
||||
|
||||
EOF
|
||||
|
||||
LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/ellie/atuin/releases/latest)
|
||||
LATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
|
||||
|
||||
__atuin_install_arch(){
|
||||
echo "Arch Linux detected!"
|
||||
echo "Attempting AUR install"
|
||||
|
||||
if command -v yaourt &> /dev/null; then
|
||||
echo "Found yaourt"
|
||||
yaourt -S atuin
|
||||
elif command -v yay &> /dev/null; then
|
||||
echo "Found yay"
|
||||
yay -S atuin
|
||||
elif command -v pakku &> /dev/null; then
|
||||
echo "Found pakku"
|
||||
pakku -S atuin
|
||||
elif command -v pamac &> /dev/null; then
|
||||
echo "Found pamac"
|
||||
pamac install atuin
|
||||
else
|
||||
echo "Failed to install atuin! Please try manually: https://aur.archlinux.org/packages/atuin/"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
__atuin_install_ubuntu(){
|
||||
echo "Ubuntu detected"
|
||||
# TODO: select correct AARCH too
|
||||
ARTIFACT_URL="https://github.com/account/project/releases/download/$LATEST_VERSION/atuin_$LATEST_VERSION_amd64.deb"
|
||||
|
||||
TEMP_DEB="$(mktemp)" &&
|
||||
wget -O "$TEMP_DEB" $ARTIFACT_URL
|
||||
sudo dpkg -i "$TEMP_DEB"
|
||||
rm -f "$TEMP_DEB"
|
||||
}
|
||||
|
||||
__atuin_install_fedora(){
|
||||
echo "Fedora detected"
|
||||
# TODO: select correct AARCH too
|
||||
ARTIFACT_URL="https://github.com/account/project/releases/download/$LATEST_VERSION/atuin_$LATEST_VERSION_amd64.rpm"
|
||||
|
||||
TEMP_DEB="$(mktemp)" &&
|
||||
wget -O "$TEMP_DEB" $ARTIFACT_URL
|
||||
sudo dpkg -i "$TEMP_DEB"
|
||||
rm -f "$TEMP_DEB"
|
||||
}
|
||||
|
||||
__atuin_install_linux(){
|
||||
echo "Detected Linux!"
|
||||
echo "Checking distro..."
|
||||
|
||||
if $(uname -a | grep -qi "Microsoft"); then
|
||||
OS="UbuntuWSL"
|
||||
else
|
||||
if ! command -v lsb_release &> /dev/null; then
|
||||
echo "lsb_release could not be found, unable to determine your distribution"
|
||||
echo "If you are using Arch, please get lsb_release from AUR"
|
||||
exit 1
|
||||
fi
|
||||
OS=$(lsb_release -i | awk '{ print $3 }')
|
||||
fi
|
||||
|
||||
if [ $OS == "Arch" ] || [ $OS == "ManjaroLinux" ]; then
|
||||
__atuin_install_arch
|
||||
elif [ $OS == "Ubuntu" ] || [ $OS == "Debian" ] || [ $OS == "Linuxmint" ] || [ $OS == "Parrot" ] || [ $OS == "Kali" ]; then
|
||||
__atuin_install_ubuntu
|
||||
elif [ $OS == "Fedora" ]; then
|
||||
__atuin_install_fedora
|
||||
else
|
||||
# TODO: download a binary or smth
|
||||
__atuin_install_unsupported
|
||||
fi
|
||||
}
|
||||
|
||||
__atuin_install_mac(){
|
||||
echo "Detected Mac!"
|
||||
|
||||
if command -v brew &> /dev/null
|
||||
then
|
||||
echo "Installing with brew"
|
||||
brew tap ellie/atuin
|
||||
brew install atuin
|
||||
else
|
||||
echo "Could not find brew, installing with Cargo"
|
||||
__atuin_install_unsupported
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
__atuin_install_cargo(){
|
||||
echo "Attempting install with cargo"
|
||||
|
||||
if ! command -v cargo &> /dev/null
|
||||
then
|
||||
echo "cargo not found! Attempting to install rustup"
|
||||
|
||||
if command -v rustup &> /dev/null
|
||||
then
|
||||
echo "rustup was found, but cargo wasn't. Something is up with your install"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -q
|
||||
|
||||
echo "rustup installed! Attempting cargo install"
|
||||
|
||||
cargo install atuin
|
||||
fi
|
||||
}
|
||||
|
||||
__atuin_install_unsupported(){
|
||||
echo "Unknown or unsupported OS"
|
||||
echo "Please check the README at https://github.com/ellie/atuin for manual install instructions"
|
||||
echo "If you have any problems, please open an issue!"
|
||||
|
||||
while true; do
|
||||
read -p "Do you wish to attempt an install with `cargo`?" yn
|
||||
case $yn in
|
||||
[Yy]* ) __atuin_install_cargo; break;;
|
||||
[Nn]* ) exit;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# TODO: would be great to support others!
|
||||
case "$OSTYPE" in
|
||||
linux*) __atuin_install_linux ;;
|
||||
darwin*) __atuin_install_mac ;;
|
||||
msys*) __atuin_install_unsupported ;;
|
||||
solaris*) __atuin_install_unsupported ;;
|
||||
bsd*) __atuin_install_unsupported ;;
|
||||
*) __atuin_install_unsupported ;;
|
||||
esac
|
||||
|
|
Loading…
Reference in a new issue