Fixes: 1) Replaced hardcoded paths with script-relative paths for better portability; 2) Corrected CPU and memory calculation logic for system checks; 3) Replaced inconsistent script formatting and error handling; 4) Resolved redundant cleanup steps post service startup. Extra: Refactored and cleaned up script logic for maintainability; added WISELESS branding across scripts for consistency; enhanced terminal output and user messaging.
63 lines
1.8 KiB
Bash
Executable file
63 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [ ! -d "./evibes" ]; then
|
|
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
|
|
exit 1
|
|
fi
|
|
|
|
PURPLE="\e[38;2;121;101;209m"
|
|
RESET="\e[0m"
|
|
GRAY="\e[90m"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
|
|
|
|
if [ ! -f "$ART_PATH" ]; then
|
|
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
while IFS= read -r line; do
|
|
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
|
|
done < "$ART_PATH"
|
|
|
|
printf "\n%bby WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
|
|
|
|
if [ ! -f .env ]; then
|
|
printf "\e[33m.env file not found. Exiting without running Docker steps.\e[0m\n"
|
|
exit 0
|
|
fi
|
|
|
|
CPU_COUNT=$(nproc 2>/dev/null || sysctl -n hw.ncpu)
|
|
if [ "$CPU_COUNT" -lt 4 ]; then
|
|
printf "\e[31mInsufficient CPU cores: %d detected. Minimum 4 required.\e[0m\n" "$CPU_COUNT"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f /proc/meminfo ]; then
|
|
MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
|
|
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_KB}/1024/1024}")
|
|
else
|
|
MEM_BYTES=$(vm_stat | awk '/Pages free/ {print $3 * 4096}')
|
|
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_BYTES}/1024/1024/1024}")
|
|
fi
|
|
|
|
if (( $(echo "$MEM_GB < 6" | bc -l) )); then
|
|
printf "\e[31mInsufficient RAM: %.2fGB detected. Minimum 6 GB required.\e[0m\n" "$MEM_GB"
|
|
exit 1
|
|
fi
|
|
|
|
FREE_GB=$(df -BG . | awk 'NR==2 {gsub("G","",$4); print $4}')
|
|
if [ "$FREE_GB" -lt 20 ]; then
|
|
printf "\e[31mInsufficient free disk space: %dGB available. Minimum 20 GB required.\e[0m\n" "$FREE_GB"
|
|
exit 1
|
|
fi
|
|
|
|
printf "\e[32mSystem requirements met: CPU cores=%d, RAM=%.2fGB, FreeDisk=%dGB\e[0m\n" "$CPU_COUNT" "$MEM_GB" "$FREE_GB"
|
|
|
|
printf "\e[36mPulling related images…\e[0m\n"
|
|
docker compose pull --ansi never
|
|
|
|
printf "\e[36mBuilding the project's images…\e[0m\n"
|
|
docker compose build --ansi never
|