71 lines
2.3 KiB
Bash
Executable file
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
|
|
}
|