summaryrefslogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install.sh')
-rwxr-xr-x[-rw-r--r--]install.sh159
1 files changed, 158 insertions, 1 deletions
diff --git a/install.sh b/install.sh
index 162602c0..b540a38b 100644..100755
--- a/install.sh
+++ b/install.sh
@@ -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