#!/usr/bin/env bash ## CONSTANTS #TODO: LATEST_TAG # LATEST_TAG=$(curl -s https://git.artcode.re/api/v1/repos/miaou/miaou-bash/tags|grep -oPm1 '{"name":".*?",' | head -n1 | cut -d'"' -f4) # https://git.artcode.re/miaou/miaou-bash/archive/0.3.109.tar.gz MAIN_TAR_GZ_URL="https://git.artcode.re/miaou/miaou-bash/archive/main.tar.gz" ## FUNCTIONS function upgrade { echo UPGRADE execute_miaou_lib self-upgrade } function install { echo INSTALL MIAOU_BASH_DIR=/opt/miaou-bash export MIAOU_BASH_DIR local tempfile tempfile="/tmp/$(basename "$MAIN_TAR_GZ_URL")" curl -so "$tempfile" $MAIN_TAR_GZ_URL sudo tar -xzf "$tempfile" --directory "$(dirname "$MIAOU_BASH_DIR")" rm "$tempfile" execute_miaou_lib initiate source /etc/profile echo "miaou-bash successfully installed" } function assert_supported_distro { if ! grep -E '^ID=debian|^ID_LIKE=debian' /etc/os-release && ! grep -E '^ID=arch|^ID_LIKE=arch' /etc/os-release; then local distro distro=$(grep -oP '^ID=\K(.*)' /etc/os-release) >&2 echo "unsupported GNU/Linux distribution: $distro" >&2 echo 'only debian-like OR arch-like currently supported' exit 2 fi } function once_installed { [[ -v MIAOU_BASH_DIR && -d "$MIAOU_BASH_DIR" && -L /etc/inputrc && "$(readlink /etc/inputrc)" == "$MIAOU_BASH_DIR"/etc/inputrc ]] } function execute_miaou_lib { sudo -E "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR"/lib/"$1".bash } function sudo_root { [[ "$UID" -ne 0 ]] && sudo -vp 'SUDO privilege required: ' true } ## MAIN # source <(curl -s https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install2.sh) set -Eeuo pipefail assert_supported_distro sudo_root if once_installed; then upgrade; else install; fi