Standardize mail-log-analyzer.sh menu validation and colors

IMPROVEMENTS:
- Added input validation for time period choice (1-8) with retry loop
- Added color codes to all menu options (${CYAN}1)${NC} format)
- Changed wildcard case to properly reject invalid input
- Added explicit break statements for all valid selections
- Improved error messages for invalid choice

VALIDATION DETAILS:
- Choice: Only accepts 1-8, rejects invalid with clear error message
- Retry loop: User stays in menu until valid choice is entered
- Default handling: Maintains [4] default for 24 hours

MENU STANDARDS COMPLIANCE:
✓ Input validation (CRITICAL)
✓ Default values (IMPORTANT - 24 hours is default)
✓ Color codes (CRITICAL - standardized to CYAN)
✓ Error messages on invalid input (IMPORTANT)
✓ Retry logic for failed validation (IMPORTANT)

Lines modified: ~25 (input validation + color codes)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
cschantz
2026-02-17 18:41:11 -05:00
parent f16071ca9e
commit bc8c85430e
+30 -23
View File
@@ -1402,31 +1402,38 @@ main() {
# Display time period selection menu
echo -e "${CYAN}${BOLD}Select Analysis Time Period:${NC}"
echo ""
echo " 1) Last 1 hour"
echo " 2) Last 6 hours"
echo " 3) Last 12 hours"
echo " 4) Last 24 hours (recommended)"
echo " 5) Last 48 hours (2 days)"
echo " 6) Last 1 week (7 days)"
echo " 7) Last 1 month (30 days)"
echo " 8) Entire log file"
echo -e " ${CYAN}1)${NC} Last 1 hour"
echo -e " ${CYAN}2)${NC} Last 6 hours"
echo -e " ${CYAN}3)${NC} Last 12 hours"
echo -e " ${CYAN}4)${NC} Last 24 hours (recommended)"
echo -e " ${CYAN}5)${NC} Last 48 hours (2 days)"
echo -e " ${CYAN}6)${NC} Last 1 week (7 days)"
echo -e " ${CYAN}7)${NC} Last 1 month (30 days)"
echo -e " ${CYAN}8)${NC} Entire log file"
echo ""
echo -n "Enter choice [4]: "
read -r choice
choice=${choice:-4}
# Map choice to hours
case $choice in
1) ANALYSIS_HOURS=1; ANALYSIS_DESC="1 hour" ;;
2) ANALYSIS_HOURS=6; ANALYSIS_DESC="6 hours" ;;
3) ANALYSIS_HOURS=12; ANALYSIS_DESC="12 hours" ;;
4) ANALYSIS_HOURS=24; ANALYSIS_DESC="24 hours" ;;
5) ANALYSIS_HOURS=48; ANALYSIS_DESC="48 hours" ;;
6) ANALYSIS_HOURS=168; ANALYSIS_DESC="1 week" ;;
7) ANALYSIS_HOURS=720; ANALYSIS_DESC="1 month" ;;
8) ANALYSIS_HOURS=999999; ANALYSIS_DESC="entire log" ;;
*) ANALYSIS_HOURS=24; ANALYSIS_DESC="24 hours" ;;
esac
# Validate choice input with retry loop
while true; do
read -p "Enter choice [4]: " choice
choice=${choice:-4}
if ! [[ "$choice" =~ ^[1-8]$ ]]; then
print_error "Invalid choice. Please enter 1-8"
continue
fi
# Map choice to hours
case $choice in
1) ANALYSIS_HOURS=1; ANALYSIS_DESC="1 hour"; break ;;
2) ANALYSIS_HOURS=6; ANALYSIS_DESC="6 hours"; break ;;
3) ANALYSIS_HOURS=12; ANALYSIS_DESC="12 hours"; break ;;
4) ANALYSIS_HOURS=24; ANALYSIS_DESC="24 hours"; break ;;
5) ANALYSIS_HOURS=48; ANALYSIS_DESC="48 hours"; break ;;
6) ANALYSIS_HOURS=168; ANALYSIS_DESC="1 week"; break ;;
7) ANALYSIS_HOURS=720; ANALYSIS_DESC="1 month"; break ;;
8) ANALYSIS_HOURS=999999; ANALYSIS_DESC="entire log"; break ;;
esac
done
echo ""
print_info "Analyzing last $ANALYSIS_DESC of mail logs..."