From d996e424a1b2219a5ed89f341ba2ebb1f2a2b5a5 Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Wed, 3 Dec 2025 21:19:08 -0500 Subject: [PATCH] feat: enhance Laravel cache script with progress visualization and structured command execution --- laravalcache.sh | 109 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 92 insertions(+), 17 deletions(-) diff --git a/laravalcache.sh b/laravalcache.sh index d19cd237e..1d8c809fd 100755 --- a/laravalcache.sh +++ b/laravalcache.sh @@ -1,17 +1,92 @@ -php artisan cache:clear -php artisan config:clear -php artisan route:clear -php artisan view:clear -php artisan event:clear -php artisan config:cache -php artisan route:cache -php artisan view:cache -php artisan event:cache -chown -R www-data:www-data storage bootstrap/cache -chmod -R 775 storage bootstrap/cache -php artisan package:discover --ansi -php artisan optimize -php artisan queue:work --daemon & -if command -v php >/dev/null 2>&1; then - php -r "if (function_exists('opcache_reset')) opcache_reset();" -fi +#!/usr/bin/env bash +set -euo pipefail + +BAR_WIDTH=40 +SLEEP_INTERVAL=0.04 +CLEAR_LINE="\033[K" +GREEN="\033[32m" +RESET="\033[0m" + +STEPS=( + "Clear caches" + "Rebuild caches" + "Reset ownership" + "Discover packages" + "Optimize app" + "Restart queue" + "Reset OPcache" +) + +COMMANDS=( + "php artisan cache:clear && php artisan config:clear && php artisan route:clear && php artisan view:clear && php artisan event:clear" + "php artisan config:cache && php artisan route:cache && php artisan view:cache && php artisan event:cache" + "chown -R www-data:www-data storage bootstrap/cache && chmod -R 775 storage bootstrap/cache" + "php artisan package:discover --ansi" + "php artisan optimize" + "pkill -f 'artisan queue:work' >/dev/null 2>&1 || true; nohup php artisan queue:work --daemon --quiet >> /dev/null 2>&1 &" + "php -r 'if(function_exists(\"opcache_reset\")) opcache_reset();' 2>/dev/null || true" +) + +draw_bar() { + local percent=$1 + local width=$2 + local text="$3" + + local clean_text + clean_text=$(echo -ne "$text" | sed 's/\x1b\[[0-9;]*m//g') + [ ${#clean_text} -gt $width ] && clean_text="${clean_text:0:$width}" + + local filled=$(( percent * width / 100 )) + [ $filled -gt $width ] && filled=$width + + local text_start=$(( (width - ${#clean_text}) / 2 )) + local text_end=$(( text_start + ${#clean_text} )) + + local bar="" + for ((i=0;i= text_start && i < text_end )); then + bar+="${clean_text:i-text_start:1}" + else + if (( i < filled )); then + bar+="#" + else + bar+="-" + fi + fi + done + + printf "[%s] %3d%%" "$bar" "$percent" +} + +run_step() { + local name="$1" + local command="$2" + local start="$3" + local end="$4" + + bash -c "$command" > /dev/null 2>&1 & + local pid=$! + + local percent=$start + while kill -0 "$pid" 2>/dev/null; do + [ "$percent" -lt "$end" ] && percent=$((percent + 1)) + echo -ne "\r$(draw_bar $percent $BAR_WIDTH "$name")$CLEAR_LINE" + sleep "$SLEEP_INTERVAL" + done + + wait "$pid" + echo -ne "\r$(draw_bar $end $BAR_WIDTH "$name")$CLEAR_LINE" +} + +main() { + local total=${#STEPS[@]} + for i in "${!STEPS[@]}"; do + local start=$(( i * 100 / total )) + local end=$(( (i + 1) * 100 / total )) + run_step "${STEPS[$i]}" "${COMMANDS[$i]}" "$start" "$end" + done + + echo -ne "\n${GREEN}Laravel cache workflow complete!${RESET}\n" +} + +main