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:
@@ -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..."
|
||||
|
||||
Reference in New Issue
Block a user