#!/bin/bash colors_supported() { # Check if stdout is a terminal [[ -t 1 ]] || return 1 # Check if TERM is set and not "dumb" [[ -n "$TERM" && "$TERM" != "dumb" ]] || return 1 # Check if tput is available and supports colors if command -v tput >/dev/null 2>&1; then tput setaf 1 >/dev/null 2>&1 || return 1 fi return 0 } if colors_supported; then # Colors & Styles for output RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' BOLD='\033[1m' NC='\033[0m' # No Color else RED='' GREEN='' BLUE='' BOLD='' NC='' fi print_success() { printf "%b✓%b %s\n" "$GREEN" "$NC" "$1" } print_info() { printf "%b%bℹ%b %s\n" "$BLUE" "$BOLD" "$NC" "$1" } print_step() { printf "%b===%b%b %s %b%b===%b\n" "$BLUE" "$NC" "$BOLD" "$1" "$NC" "$BLUE" "$NC" } print_warning() { printf "%b⚠%b %s\n" "$YELLOW" "$NC" "$1" } print_error() { printf "%b⚠%b %s\n" "$RED" "$NC" "$1" } pushdir() { pushd $1 > /dev/null } popdir() { popd > /dev/null }