1
1
mirror of https://github.com/ellie/atuin.git synced 2024-08-17 08:50:43 +03:00

Pre release polishing (#42)

* Improve readme

* Add demo gif

* Update readme

* Add mac build

* Amend release config

* Update gif
This commit is contained in:
Ellie Huxtable 2021-04-26 14:25:57 +01:00 committed by GitHub
parent 646fec893e
commit 0610ae197f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 236 additions and 15 deletions

View File

@ -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
View File

@ -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",

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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()
)

View File

@ -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"

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

159
install.sh Normal file → Executable file
View 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