mirror of
https://github.com/ellie/atuin.git
synced 2024-08-17 17:00:33 +03:00
* fix: install script echo * fix(nu): Update atuin.nu to resolve 0.92 deprecation (#1913) * feat(install): Update install.sh to support KDE Neon (#1908) KDE Neon is based on Ubuntu 22.04, but the OS List for Ubuntu-based distros does not have the string "neon". This commit adds it. * chore(deps): bump lukemathwalker/cargo-chef (#1901) Bumps lukemathwalker/cargo-chef from latest-rust-1.76.0-buster to latest-rust-1.77.0-buster. --- updated-dependencies: - dependency-name: lukemathwalker/cargo-chef dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): flake.lock: Update (#1910) Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ebe6e807793e7c9cc59cf81225fdee1a03413811' (2024-02-29) → 'github:NixOS/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * fix(doctor): detect preexec plugin using env ATUIN_PREEXEC_BACKEND (#1856) * refactor(doctor): update func names and desc to match current impl * fix(doctor): use environment variable to detect plugin if possible In this patch, if the plugin provides an environment variable, we use the environment variable to test the existence of the plugin. When an environment variable is not available, we continue to use the mock interactive session by "shell -ic command". We also test shell-specific plugins only in the corresponding shells. An additional test can be performed by a custom function for each plugin. * chore(deps): bump sysinfo from 0.30.6 to 0.30.7 (#1888) Bumps [sysinfo](https://github.com/GuillaumeGomez/sysinfo) from 0.30.6 to 0.30.7. - [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md) - [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.30.6...v0.30.7) --- updated-dependencies: - dependency-name: sysinfo dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Ivan Toriya <toriya@precisdigital.com> Co-authored-by: Wind <WindSoilder@outlook.com> Co-authored-by: Diego Carrasco Gubernatis <557703+dacog@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
227 lines
6.5 KiB
Bash
Executable File
227 lines
6.5 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
if [[ "${BASH_VERSION%%.*}" -eq 3 ]]; then
|
|
echo "Atuin has limited support for Bash 3.2. The Atuin config enter_accept cannot be turned off." >&2
|
|
echo "To turn off enter_accept, please upgrade your version of bash (possibly via homebrew or ports)" >&2
|
|
fi
|
|
|
|
set -euo pipefail
|
|
|
|
cat << EOF
|
|
_______ _______ __ __ ___ __ _
|
|
| _ || || | | || | | | | |
|
|
| |_| ||_ _|| | | || | | |_| |
|
|
| | | | | |_| || | | |
|
|
| | | | | || | | _ |
|
|
| _ | | | | || | | | | |
|
|
|__| |__| |___| |_______||___| |_| |__|
|
|
|
|
Magical shell history
|
|
|
|
Atuin setup
|
|
https://github.com/atuinsh/atuin
|
|
|
|
Please file an issue if you encounter any problems!
|
|
|
|
===============================================================================
|
|
|
|
EOF
|
|
|
|
if ! command -v curl &> /dev/null; then
|
|
echo "curl not installed. Please install curl."
|
|
exit
|
|
elif ! command -v sed &> /dev/null; then
|
|
echo "sed not installed. Please install sed."
|
|
exit
|
|
fi
|
|
|
|
LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/atuinsh/atuin/releases/latest)
|
|
# Allow sed; sometimes it's more readable than ${variable//search/replace}
|
|
# shellcheck disable=SC2001
|
|
LATEST_VERSION=$(echo "$LATEST_RELEASE" | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
|
|
|
|
__atuin_install_arch(){
|
|
echo "Arch Linux detected!"
|
|
|
|
if command -v pacman &> /dev/null
|
|
then
|
|
echo "Installing with pacman"
|
|
sudo pacman -S atuin
|
|
else
|
|
echo "Attempting AUR install"
|
|
if command -v paru &> /dev/null; then
|
|
echo "Found paru"
|
|
paru -S atuin
|
|
elif 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-git/"
|
|
fi
|
|
fi
|
|
|
|
}
|
|
|
|
__atuin_install_deb_based(){
|
|
if [ "$(dpkg --print-architecture)" = "amd64" ]; then
|
|
echo "Detected distro: $OS"
|
|
ARTIFACT_URL="https://github.com/atuinsh/atuin/releases/download/$LATEST_VERSION/atuin_${LATEST_VERSION//v/}_amd64.deb"
|
|
TEMP_DEB="$(mktemp)".deb &&
|
|
curl -Lo "$TEMP_DEB" "$ARTIFACT_URL"
|
|
if command -v sudo &> /dev/null; then
|
|
sudo apt install "$TEMP_DEB"
|
|
else
|
|
su -l -c "apt install '$TEMP_DEB'"
|
|
fi
|
|
rm -f "$TEMP_DEB"
|
|
else
|
|
echo "$OS detected, but not amd64"
|
|
__atuin_install_unsupported
|
|
fi
|
|
}
|
|
|
|
__atuin_install_linux(){
|
|
echo "Detected Linux!"
|
|
echo "Checking distro..."
|
|
if (uname -a | grep -qi "Microsoft"); then
|
|
OS="ubuntuwsl"
|
|
elif ! command -v lsb_release &> /dev/null; then
|
|
echo "lsb_release could not be found. Falling back to /etc/os-release"
|
|
OS="$(grep -Po '(?<=^ID=).*$' /etc/os-release | tr '[:upper:]' '[:lower:]')" 2>/dev/null
|
|
else
|
|
OS=$(lsb_release -i | awk '{ print $3 }' | tr '[:upper:]' '[:lower:]')
|
|
fi
|
|
case "$OS" in
|
|
"arch" | "manjarolinux" | "endeavouros")
|
|
__atuin_install_arch;;
|
|
"ubuntu" | "ubuntuwsl" | "debian" | "linuxmint" | "parrot" | "kali" | "elementary" | "pop" | "neon")
|
|
__atuin_install_deb_based;;
|
|
*)
|
|
# TODO: download a binary or smth
|
|
__atuin_install_unsupported;;
|
|
esac
|
|
}
|
|
|
|
__atuin_install_mac(){
|
|
echo "Detected Mac!"
|
|
|
|
if command -v brew &> /dev/null
|
|
then
|
|
echo "Installing with brew"
|
|
brew install atuin
|
|
else
|
|
echo "Could not find brew, installing with Cargo"
|
|
__atuin_install_unsupported
|
|
fi
|
|
|
|
}
|
|
|
|
__atuin_install_termux(){
|
|
echo "Termux detected!"
|
|
|
|
if command -v pkg &> /dev/null; then
|
|
echo "Installing with pkg"
|
|
pkg install atuin
|
|
else
|
|
echo "Could not find pkg"
|
|
__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"
|
|
|
|
fi
|
|
|
|
cargo install atuin
|
|
}
|
|
|
|
__atuin_install_unsupported(){
|
|
echo "Unknown or unsupported OS or architecture"
|
|
echo "Please check the README at https://github.com/atuinsh/atuin for manual install instructions"
|
|
echo "If you have any problems, please open an issue!"
|
|
|
|
while true; do
|
|
read -r -p "Do you wish to attempt an install with 'cargo'? [Y/N] " 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-android*) __atuin_install_termux ;;
|
|
linux*) __atuin_install_linux ;;
|
|
darwin*) __atuin_install_mac ;;
|
|
msys*) __atuin_install_unsupported ;;
|
|
solaris*) __atuin_install_unsupported ;;
|
|
bsd*) __atuin_install_unsupported ;;
|
|
*) __atuin_install_unsupported ;;
|
|
esac
|
|
|
|
# TODO: Check which shell is in use
|
|
# Use of single quotes around $() is intentional here
|
|
# shellcheck disable=SC2016
|
|
if ! grep -q "atuin init zsh" "${ZDOTDIR:-$HOME}/.zshrc"; then
|
|
printf '\neval "$(atuin init zsh)"\n' >> "${ZDOTDIR:-$HOME}/.zshrc"
|
|
fi
|
|
|
|
# Use of single quotes around $() is intentional here
|
|
# shellcheck disable=SC2016
|
|
|
|
if ! grep -q "atuin init bash" ~/.bashrc; then
|
|
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
|
|
printf '\n[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh\n' >> ~/.bashrc
|
|
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
|
|
fi
|
|
|
|
cat << EOF
|
|
|
|
|
|
|
|
_______ __ __ _______ __ _ ___ _ __ __ _______ __ __
|
|
| || | | || _ || | | || | | | | | | || || | | |
|
|
|_ _|| |_| || |_| || |_| || |_| | | |_| || _ || | | |
|
|
| | | || || || _| | || | | || |_| |
|
|
| | | || || _ || |_ |_ _|| |_| || |
|
|
| | | _ || _ || | | || _ | | | | || |
|
|
|___| |__| |__||__| |__||_| |__||___| |_| |___| |_______||_______|
|
|
|
|
|
|
|
|
Thanks for installing Atuin! I really hope you like it.
|
|
|
|
If you have any issues, please open an issue on GitHub or visit our Discord (https://discord.gg/jR3tfchVvW)!
|
|
|
|
If you love Atuin, please give us a star on GitHub! It really helps ⭐️ https://github.com/atuinsh/atuin
|
|
|
|
Please run "atuin register" to get setup with sync, or "atuin login" if you already have an account
|
|
|
|
EOF
|