diff --git a/colorscript.sh b/colorscript.sh new file mode 100644 index 0000000..be4e8ec --- /dev/null +++ b/colorscript.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# ─< ANSI color codes >─────────────────────────────────────────────────────────────────── +RED='\033[0;31m' +CYAN='\033[0;36m' +YELLOW='\033[0;33m' +LIGHT_GREEN='\033[0;92m' +BOLD='\033[1m' +NC='\033[0m' # No Color + +echo_error() { + printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2 +} + +echo_info() { + printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1" +} + +echo_warning() { + printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1" +} + +echo_note() { + printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$1" +} + +# ─< Check if the given command exists silently >───────────────────────────────────────── +command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +# ─< Check if the user is root and set sudo variable if necessary >─────────────────────── +check_root() { + if [ "$(id -u)" -ne 0 ]; then + if command_exists sudo; then + echo_info "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_info "Root access confirmed." + _sudo="" + fi +} + +if ! command_exists git; then + echo_error "Some dependencies are missing!" + exit 1 +fi + +clone() { + local cloneDir="/opt/shell-color-scripts" + if [ ! -d "$cloneDir" ]; then + git clone --depth=1 https://github.com/charitarthchugh/shell-color-scripts "$cloneDir" + fi +} + +link() { + if [ -d "$HOME/.local/bin" ]; then + ln -sfr /opt/shell-color-scripts/colorscript.sh "$HOME/.local/bin/colorscript" + else + if check_root; then + $_sudo ln -sfr /opt/shell-color-scripts/colorscript.sh /bin/colorscript + else + echo_warning "cloned the project to /opt/ but was not able to link the script to the bin directory!" + fi + fi +} + +if clone; then + link +fi