scripts/installs/install-blesh.sh
2025-04-14 09:22:15 +02:00

71 lines
2.3 KiB
Bash
Executable file

{
#!/bin/bash
# ─< Helper functions >─────────────────────────────────────────────────────────────────
echo_error() { echo -e "\033[0;1;31mError: \033[0;31m\t${*}\033[0m"; }
echo_binfo() { echo -e "\033[0;1;34mINFO:\033[0;34m\t${*}\033[0m"; }
echo_info() { echo -e "\033[0;1;35mInfo: \033[0;35m${*}\033[0m"; }
# ─< Check if the given command exists silently >─────────────────────────────────────────
command_exists() {
command -v "$@" >/dev/null 2>&1
}
# ─< Check root and set sudo variable if necessary >───────────────────────────────────────────────
check_root() {
if [[ "${EUID}" -ne 0 ]]; then
if command_exists sudo; then
echo_binfo "User is not root. Using sudo for privileged operations."
_sudo="sudo"
else
echo_error "No sudo found and you're not root! Can't install packages."
return 1
fi
else
echo_binfo "Root access confirmed."
_sudo=""
fi
}
install_pkg() {
bash -c "$(curl -sSL https://git.k4li.de/pika/scripts/raw/branch/main/bash/snippets/install_pkg.sh)" -- "$@"
}
i_blesh() {
dir="$(mktemp -d)"
local deps=("bash" "git" "make" "gawk")
for pkg in "${deps[@]}"; do
if ! command_exists "$pkg"; then
install_pkg "$pkg"
fi
done &&
git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git "$dir" &&
make -C "$dir" install PREFIX=$HOME/.local
}
cleanup() {
echo_info "Do you want to clear the temp dir ($dir/) which was created for installation? [Y|n]" && read -r ask_dir
case "$ask_dir" in
[Nn])
echo_info "All right, didn't clean anything!"
;;
[Yy] | *)
$_sudo command rm -rf "$dir/"
;;
esac
}
main() {
# Check root access and set _sudo
if ! check_root; then
return 1
fi
if [[ ! -f $HOME/.local/share/blesh/ble.sh ]]; then
i_blesh
cleanup
else
echo_info "Blesh is already installed"
fi
}
main
}