diff --git a/README.md b/README.md index 45c3759..eebc571 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Any feedback appreciated: [contact@artcode.re](mailto:contact@artcode.re) ## install -`curl -s https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh | sudo bash && exec bash -l` +`source <(curl -s https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh)` ## upgrade diff --git a/install.sh b/install.sh index 4c6995d..5983c1c 100755 --- a/install.sh +++ b/install.sh @@ -1,40 +1,65 @@ -#!/usr/bin/bash -E - +#!/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 bootstrap { - cd "$(mktemp -d)" || exit 3 - curl -s -O $MAIN_TAR_GZ_URL - tar -xzf main.tar.gz --directory "$(dirname $MIAOU_BASH_DIR)" +function upgrade { + echo UPGRADE + execute_miaou_lib self-upgrade } -function assert_supported_distro { - grep -E '^ID=debian|^ID_LIKE=debian' /etc/os-release || - grep -E '^ID=arch|^ID_LIKE=arch' /etc/os-release +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 + echo "miaou-bash successfully $deployment_type_adjective" } -## MAIN +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 +} -set -Eeuo pipefail +function once_installed { + [[ -v MIAOU_BASH_DIR && -d "$MIAOU_BASH_DIR" && + -L /etc/inputrc && + "$(readlink /etc/inputrc)" == "$MIAOU_BASH_DIR"/etc/inputrc ]] +} -deployment_type_adjective="${1:-installed}" +function execute_miaou_lib { + sudo -E "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR"/lib/"$1".bash +} -[[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1 -! assert_supported_distro && echo 'unsupported distro: debian-like OR arch-like expected' && exit 2 +function sudo_root { + [[ "$UID" -ne 0 ]] && sudo -vp 'SUDO privilege required: ' + true +} +## MAIN -if [[ ! -v MIAOU_BASH_DIR ]]; then - MIAOU_BASH_DIR=/opt/miaou-bash - export MIAOU_BASH_DIR -fi +# source <(curl -s https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install2.sh) -if [[ -d "$MIAOU_BASH_DIR" && -L /etc/inputrc && "$(readlink /etc/inputrc)" == "$MIAOU_BASH_DIR"/etc/inputrc ]]; then - . "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" -else - bootstrap - . "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR/lib/initiate.bash" - echo "miaou-bash successfully $deployment_type_adjective" -fi +set -Eeuo pipefail +assert_supported_distro +sudo_root +deployment_type_adjective="${1:-installed}" +if once_installed; then upgrade; else install; fi +exec bash -l diff --git a/install2.sh b/install2.sh deleted file mode 100755 index 2c76d29..0000000 --- a/install2.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/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" - exec bash -l -} - -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