diff --git a/README.md b/README.md index 48918fa..f80e3b9 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ Ensure you have the following installed: ## **Usage** - ```bash - + ``` + ./kazewp.sh list - List all installed WordPress sites" ./kazewp.sh install - Install a new WordPress site" ./kazewp.sh stop - Stop running WordPress sites" diff --git a/kazewp.sh b/kazewp.sh index e905315..15508a6 100755 --- a/kazewp.sh +++ b/kazewp.sh @@ -12,7 +12,7 @@ source "${SCRIPT_DIR}/lib/docker.sh" source "${SCRIPT_DIR}/lib/caddy.sh" source "${SCRIPT_DIR}/lib/wordpress.sh" source "${SCRIPT_DIR}/lib/menu.sh" -#source "${SCRIPT_DIR}/lib/log.sh" +source "${SCRIPT_DIR}/lib/log.sh" # Check if Docker is installed diff --git a/lib/caddy.sh b/lib/caddy.sh index 48d0b63..2803ecc 100644 --- a/lib/caddy.sh +++ b/lib/caddy.sh @@ -102,7 +102,7 @@ setup_directories() { mkdir -p "${CADDY_DIR}/caddy_config" if [ ! -f "${CADDY_DIR}/Caddyfile" ]; then - echo "Creating initial Caddy configuration..." + #echo "Creating initial Caddy configuration..." create_caddy_docker_compose fi } \ No newline at end of file diff --git a/lib/colors.sh b/lib/colors.sh index 2ad1346..700faf2 100644 --- a/lib/colors.sh +++ b/lib/colors.sh @@ -43,6 +43,7 @@ BG_PURPLE='\033[45m' BG_CYAN='\033[46m' BG_WHITE='\033[47m' + # Styling Helper Functions print_header() { local text="$1" diff --git a/lib/log.sh b/lib/log.sh index c916825..da5bf20 100644 --- a/lib/log.sh +++ b/lib/log.sh @@ -13,22 +13,11 @@ if [ ! -w "$LOG_FILE" ]; then exit 1 fi -# Function to add timestamp to log file -add_timestamp() { - echo -e "\n========== $(date '+%Y-%m-%d %H:%M:%S') ==========" >> "$LOG_FILE" +# Function to strip ANSI color codes +strip_colors() { + sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" } -# Save original file descriptors -exec 3>&1 -exec 4>&2 - -# Add timestamp to log file -add_timestamp - -# Setup logging while preserving read -p functionality: -# Use process substitution for logging -exec 1> >(tee >(sed 's/\x1B\[[0-9;]*[JKmsu]//g' >> "$LOG_FILE")) -exec 2> >(tee >(sed 's/\x1B\[[0-9;]*[JKmsu]//g' >> "$LOG_FILE")) - -# Restore original stdout for read commands -export BASH_READ_FD=3 \ No newline at end of file +# Redirect all output to both the terminal and the log file (without colors) +exec > >(tee -a >(strip_colors >> "$LOG_FILE")) +exec 2> >(tee -a >(strip_colors >> "$LOG_FILE") >&2) \ No newline at end of file diff --git a/lib/menu.sh b/lib/menu.sh index 7bd6a25..062e7c8 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -14,32 +14,36 @@ show_interactive_menu() { print_info " $0 delete - Delete a WordPress site" print_info " $0 delete all - Delete everything" - # First check if any sites exist - if [ ! -d "$WORDPRESS_DIR" ] || [ -z "$(ls -A "$WORDPRESS_DIR" 2>/dev/null)" ]; then - print_warning "No WordPress sites installed yet." - show_action_menu "brand-new" - return - fi # Get and display existing sites local -a sites=() local i=1 print_subheader "Installed WordPress Sites" - while IFS= read -r site; do - if [ -f "$site/compose.yaml" ]; then - sites+=("$(basename "$site")") - domain=$(basename "$site") - status=$(get_site_status "$site/compose.yaml") - print_menu_item "$i" "$domain" "$status" - ((i++)) - fi - done < <(find "$WORDPRESS_DIR" -mindepth 1 -maxdepth 1 -type d | sort) + + # First check if any sites exist + if [ ! -d "$WORDPRESS_DIR" ] || [ -z "$(ls -A "$WORDPRESS_DIR" 2>/dev/null)" ]; then + print_warning "No WordPress sites installed yet." + #show_action_menu "brand-new" + #return + else + while IFS= read -r site; do + if [ -f "$site/compose.yaml" ]; then + sites+=("$(basename "$site")") + domain=$(basename "$site") + status=$(get_site_status "$site/compose.yaml") + print_menu_item "$i" "$domain" "$status" + ((i++)) + fi + done < <(find "$WORDPRESS_DIR" -mindepth 1 -maxdepth 1 -type d | sort) + fi print_subheader "Available Actions" echo -e "${BWHITE}Select an option:${NC}" print_menu_action "n" "Install new WordPress site" - print_menu_action "m" "Manage multiple sites" + if [ -d "$WORDPRESS_DIR" ] && [ -n "$(find "$WORDPRESS_DIR" -mindepth 1 -type d 2>/dev/null)" ]; then + print_menu_action "m" "Manage multiple sites" + fi print_menu_action "q" "Quit" print_separator